2012-06-13 27 views
11

मैं iCloud को कुछ वरीयता डेटा सिंक करने के लिए NSUbiquitousKeyValueStore का उपयोग कर रहा हूं। मैंने पाया कि यदि उपयोगकर्ता "सेटिंग एप" में iCloud के "दस्तावेज़ & डेटा" आइटम को अक्षम करता है, NSUbiquitousKeyValueStore अपने डेटा को iCloud पर सिंक्रनाइज़ नहीं कर सकता है। तो, मैं पहली बार जांच करने के लिए करता है, तो इस सेटिंग googling होता चलेगा चालू किया जाये चाहते हैं, मैं इस कोड स्निपेट नहीं मिली:प्रोग्रामिंग से कैसे पता चलता है कि iCloud उपयोगकर्ता के डिवाइस पर सक्षम है या नहीं, केवल NSUbiquitousKeyValueStore का उपयोग करते हैं?

NSURL *ubiq = [[NSFileManager defaultManager] 
        URLForUbiquityContainerIdentifier:nil]; 
    NSLog(@"url=%@",ubiq); 
    if (!ubiq) { 
     UIAlertView *av = [[UIAlertView alloc] initWithTitle:nil message:@"Please enable iCloud in Setting app" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; 
     [av show]; 
     return; 

    } 

क्या मैं जानना चाहता हूँ कि क्या यह पता लगाने के लिए एक ही रास्ता है, भले ही मैं बस का उपयोग करें NSUbiquitousKeyValueStore (iCloud दस्तावेज़ भंडारण नहीं)। क्या कोई बेहतर विकल्प है?

उत्तर

12

असल में, NSUbiquitousKeyValueStore हमेशा उपलब्ध है, भले ही उपयोगकर्ता के पास iCloud खाता न हो (इस मामले में, NSUbiquitousKeyValueStore केवल एक साधारण स्थानीय संग्रहण है)। इसलिए सामान्य रूप से, यदि कॉन्फ़िगर किए गए iCloud खाते हैं तो आपको स्वयं या उपयोगकर्ता से पूछने की आवश्यकता नहीं है।

यदि आप वास्तव में निश्चित रूप से जानना चाहते हैं, तो आईओएस 5 में, एकमात्र समाधान वह है जिसका आप उल्लेख कर रहे हैं।

+0

आपका उत्तर दस्तावेज़ों के साथ संघर्ष में प्रतीत होता है, जो कहता है: "ऑफ़लाइन होने पर आपके ऐप के व्यवहार के लिए आवश्यक डेटा के लिए इस कक्षा का उपयोग करने से बचें [...]"। मैंने पहले ही [प्रश्न] (http://stackoverflow.com/q/23662856/251760) पोस्ट किया है। क्या आप इसका उत्तर देने में सक्षम होंगे? – Jonathan

+0

इसका क्या अर्थ है कि आपको इस स्टोर पर अपने स्थानीय सत्य होने पर भरोसा नहीं करना चाहिए बल्कि आपके उपकरणों के बीच एक सरल सिंक संचार चैनल से अधिक होना चाहिए। – Julien

+0

धन्यवाद! मैंने आपके प्रश्न में [उत्तर] (http://stackoverflow.com/a/26556553/251760) में अपना उत्तर दिया, मुझे उम्मीद है कि आप इसके साथ ठीक हैं। (यदि आप स्वयं को जवाब देना चाहते हैं, तो मैं खुशी से मेरा हटा दूंगा।) – Jonathan

3

मैं नहीं जानता कि यदि डॉक्स अद्यतन किया गया है, लेकिन एप्पल अब कह रहा है:

निर्धारित करने के लिए iCloud उपलब्ध है, विशेष रूप से लांच समय में, जाँच बजाय ubiquityIdentityToken संपत्ति के मूल्य

ubiquityIdentityToken और URLForUbiquityContainerIdentifier दोनों के लिए NSFileManager देखें।

यह भी ध्यान दें कि ऐप्पल यह कह रहा है कि URLForUbiquityContainerIdentifier अपेक्षाकृत धीमी हो सकती है, और ubiquityIdentityToken की जांच अपेक्षाकृत तेज़ है।

यह आईओएस 6 और उच्चतर के लिए है।

+1

यदि आप iCloud दस्तावेज़ों का उपयोग करते हैं तो यह सत्य है, प्रश्न iCloud कुंजी-मान संग्रहण के बारे में है। –

+0

हम्म। क्या मुझे कुछ नहीं मिल रहा है? UbiquityIdentity टोकन के लिए दस्तावेज़ यह सुझाव नहीं देते हैं कि यह iCloud दस्तावेज़ों के लिए विशिष्ट है: "जब iCloud वर्तमान में उपलब्ध है, तो यह गुण [यानी, ubiquityIdentityToken] में एक अपारदर्शी वस्तु है जो वर्तमान उपयोगकर्ता की पहचान का प्रतिनिधित्व करती है। यदि iCloud किसी भी कारण या वहां के लिए अनुपलब्ध है कोई लॉग-इन उपयोगकर्ता नहीं है, इस संपत्ति का मूल्य शून्य है। " –

+1

जैसा कि जूलियन ने कहा था, कुंजी-मूल्य भंडारण हमेशा उपलब्ध होता है (भले ही 'सर्वव्यापीता टोकन' शून्य हो)। हम यह जांचना चाहते हैं कि उपयोगकर्ता ने सेटिंग> iCloud> दस्तावेज़ और डेटा अक्षम कर दिया है या नहीं। –

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

  • कोई संबंधित समस्या नहीं^_^