2012-01-11 9 views
7

हम आवेदन की दस्तावेज़ निर्देशिका में डेटा संग्रहीत कर रहे हैं और हमें आवेदन अस्वीकार कर दिया गया है। हमने नीचे दिए गए कोड के साथ मौजूदा संस्करण में डेटा संग्रहीत करने के लिए "बैक अप नहीं" विशेषता के साथ प्रयास किया है।आईओएस डेटा स्टोरेज दिशानिर्देशों का पालन न करने के कारण आवेदन अस्वीकार कर दिया गया

- (BOOL)addSkipBackupAttributeToItemAtURL:(NSURL *)URL{ 

    const char* filePath = [[URL path] fileSystemRepresentation]; 

    const char* attrName = "com.apple.MobileBackup"; 

    u_int8_t attrValue = 1; 

    int result = setxattr(filePath, attrName, &attrValue, sizeof(attrValue), 0, 0); 

    return result == 0; 

} 

हमने आईओएस डेटा स्टोरेज दिशानिर्देशों के अनुसार इसका उपयोग किया है।

पहले के संस्करण में हमने निजी निर्देशिका में डेटा संग्रहीत करने का भी प्रयास किया है। लेकिन, हम आवेदन की मंजूरी पाने में सक्षम नहीं थे।

क्या आप हमें कुछ और विवरण दे सकते हैं कि हम आवेदन की स्वीकृति क्यों प्राप्त नहीं कर पा रहे हैं? या फिर भी, हमें डेटा संग्रहण के संबंध में कोड में किसी भी अन्य बदलाव की आवश्यकता है? इसलिए, हम अनुमोदन प्राप्त कर सकते हैं और हमारे पास आईट्यून्स पर एप्लिकेशन का नया संस्करण है।

+7

आप वास्तव में क्या स्टोर कर रहे हैं और क्यों? कैश किए गए आइटम को कैश निर्देशिका में रखा जाना चाहिए, किसी भी उपयोगकर्ता द्वारा बनाए गए डेटा को दस्तावेज़ों में संग्रहीत किया जाना चाहिए, और अन्य चीजें या तो एप्लिकेशन बंडल में या tmp निर्देशिका में होनी चाहिए। – Jasarien

+0

आपकी टिप्पणियों के लिए धन्यवाद। मेरे पास बड़ी डेटाबेस फ़ाइल है और शब्दों की ध्वनि फ़ाइल भी सहेज रही है। मैंने पहले दस्तावेजों में सहेजने की कोशिश की है और फिर मैंने "बैक अप नहीं" विशेषता के साथ प्रयास किया है। तो, क्या आप कृपया मुझे बता सकते हैं कि आवेदन की मंजूरी के लिए मुझे क्या करना चाहिए? –

उत्तर

6

मुझे लगता है कि @ जसारीन की टिप्पणी सही जवाब है, लेकिन कोई और काम नहीं था, और यह सवाल अपेक्षाकृत नया है, इसलिए मैं विस्तार करूंगा।

दूसरों अस्वीकृति को देखने के लिए के लिए आपको मिलता है:

आईओएस डाटा स्टोरेज दिशानिर्देश निर्दिष्ट करें:

  1. केवल दस्तावेजों और अन्य डेटा उपयोगकर्ता द्वारा बनाई गई है कि, या जिसे निर्मित नहीं किया जा सकता आपके आवेदन से,/निर्देशिका निर्देशिका में संग्रहीत किया जाना चाहिए और iCloud द्वारा स्वचालित रूप से बैक अप लिया जाएगा।

  2. डेटा जिसे फिर से डाउनलोड किया जा सकता है या पुन: उत्पन्न किया जा सकता है/लाइब्रेरी/कैश निर्देशिका में संग्रहीत किया जाना चाहिए। कैश निर्देशिका में आपको डालने वाली फ़ाइलों के उदाहरणों में डेटाबेस कैश फ़ाइलें और डाउनलोड करने योग्य सामग्री शामिल है, जैसे कि पत्रिका, समाचार पत्र और मानचित्र अनुप्रयोगों द्वारा उपयोग किया जाता है।

  3. डेटा जो केवल अस्थायी रूप से उपयोग किया जाता है/tmp निर्देशिका में संग्रहीत किया जाना चाहिए। यद्यपि इन फ़ाइलों का बैक अप iCloud तक नहीं है, फिर भी जब आप उनके साथ काम करते हैं तो उन फ़ाइलों को हटाना याद रखें ताकि वे उपयोगकर्ता के डिवाइस पर स्थान का उपभोग नहीं कर सकें।

  4. डिवाइस पर बने रहने वाली फ़ाइलों को निर्दिष्ट करने के लिए "बैक अप नहीं" विशेषता का उपयोग करें, यहां तक ​​कि कम संग्रहण स्थितियों में भी। डेटा के साथ इस विशेषता का उपयोग करें जिसे पुनर्निर्मित किया जा सकता है लेकिन आपके ऐप के उचित कामकाज के लिए कम भंडारण स्थितियों में भी जारी रहने की आवश्यकता है या क्योंकि ग्राहक ऑफ़लाइन उपयोग के दौरान उपलब्ध होने की अपेक्षा करते हैं। यह विशेषता चिह्नित फ़ाइलों पर काम करती है चाहे वे निर्देशिका निर्देशिका सहित, किस निर्देशिका में हैं। इन फ़ाइलों को शुद्ध नहीं किया जाएगा और उपयोगकर्ता के iCloud या iTunes बैकअप में शामिल नहीं किया जाएगा। क्योंकि इन फ़ाइलों को डिवाइस पर मौजूद संग्रहण स्थान का उपयोग करते हैं, अपने अनुप्रयोग की निगरानी और समय-समय पर इन फ़ाइलों के शुद्धिकरण के लिए जिम्मेदार है। "

उदाहरण के लिए, केवल सामग्री है कि उपयोगकर्ता अपने अनुप्रयोग, जैसे, दस्तावेज, नई फ़ाइलों का उपयोग कर बनाता है , संपादन, आदि को/दस्तावेज़ निर्देशिका में संग्रहीत किया जा सकता है - और iCloud द्वारा समर्थित।

आपके ऐप द्वारा उपयोग की जाने वाली अस्थायी फ़ाइलें केवल/tmp निर्देशिका में संग्रहीत की जानी चाहिए; कृपया इसमें संग्रहीत फ़ाइलों को हटाना याद रखें स्थान जब उपयोगकर्ता ऐप से बाहर निकलता है।

डेटा जिसे पुनर्निर्मित किया जा सकता है लेकिन आपके ऐप के उचित कामकाज के लिए जारी रहना चाहिए - या क्योंकि ग्राहक ऑफ़लाइन उपयोग के लिए उपलब्ध होने की अपेक्षा करते हैं - उन्हें "बैक अप न करें" विशेषता के साथ चिह्नित किया जाना चाहिए।अधिक जानकारी के लिए, कृपया तकनीकी क्यू & ए 1719 देखें: मैं फ़ाइलों को iCloud और iTunes तक बैक अप लेने से कैसे रोकूं?

तो मैं क्यों आप का उपयोग "पीछे नहीं है" और अनुपालन में होने की उम्मीद है, लेकिन मुझे लगता है कि जैसे @Jasarien कहा - वे मतलब है कि आप कैश या अस्थायी तरह अधिक असतत निर्देशिका के लिए ले जाने के लिए।

वास्तव में समीक्षा निश्चित रूप से पास होगी जो कोर डेटा पर स्विच कर रही है और आंतरिक SQLite का उपयोग कर रही है - लेकिन शायद यह बहुत अधिक काम है।

जीएल: कैसे कैश या tmp को बचाने के लिए पर एक पोस्ट - -

तो लपेट के लिए - Where to save files in iOS 5 applications? (/ वास्तव में, हो सकता है यह सब है कि एक ... का डुप्लिकेट था)! Oded

- संपादित करें -

एक और अच्छा पोस्ट: https://stackoverflow.com/questions/8164868/ios-data-storage-guidelines-available-since-when

- # संपादित करें 2 -

और एक और अच्छा पोस्ट: iOS 5 does not allow to store downloaded data in Documents directory?

लगता है कि मैं चाहिए मैंने सिर्फ डुप्लिकेट को इंगित किया है ... :)

0

इस लिंक को देखें http://developer.apple.com/library/ios/#qa/qa1719/_index.html#//apple_ref/doc/uid/DTS40011342 जो कोड आप उपयोग कर रहे हैं वह 5.0.1 और 5.1 और बाद में नहीं है। आपको < = 5.0 के लिए कैश का उपयोग करना होगा। लेकिन बेहतर समाधान 5.1 के लिए और बाद में 5.0 के बजाय तैनात करना होगा क्योंकि यदि आपके पास बड़ी मात्रा में डेटा है, तो संभवतः कैश को बाद में साफ़ कर दिया जाएगा। आशा करता हूँ की ये काम करेगा।

संबंधित मुद्दे