2013-01-11 26 views
5
EKEventStore *eventStore = [[UpdateManager sharedUpdateManager] eventStore]; 

if ([eventStore respondsToSelector:@selector(requestAccessToEntityType:completion:)]) 
{ 
    [eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) 
    { 
     if (granted)... 

मैं उपयोगकर्ता से अपने कैलेंडर में कोई ईवेंट जोड़ने की अनुमति के लिए पूछना चाहता हूं। इसे मंजूरी देने के बाद मुझे एक घटना को हटाने के लिए उदाहरण के लिए अनुमति देना चाहिए (ऐप बंद होने और फिर से खोलने के बाद किसी अन्य सत्र में) या क्या यह सिर्फ एक समय की बात है?requestAccessToEntityType - एक बार या हर बार?

यदि यह एक बार बात है, तो क्या मैं इसे सिर्फ "इसे से छुटकारा पाने" के लिए पहले लंच पर व्यूडिडलोड में डाल सकता हूं?

+1

इसमें एक्सकोड के साथ ** बिल्कुल कुछ भी नहीं है **। –

उत्तर

16

आप केवल एक बार कॉल करने की आवश्यकता:

BOOL needsToRequestAccessToEventStore = NO; // iOS 5 behavior 
EKAuthorizationStatus authorizationStatus = EKAuthorizationStatusAuthorized; // iOS 5 behavior 
if ([[EKEventStore class] respondsToSelector:@selector(authorizationStatusForEntityType:)]) { 
    authorizationStatus = [EKEventStore authorizationStatusForEntityType:EKEntityTypeEvent]; 
    needsToRequestAccessToEventStore = (authorizationStatus == EKAuthorizationStatusNotDetermined); 
} 

if (needsToRequestAccessToEventStore) { 
    [eventStore requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError *error) {    
     if (granted) { 
      dispatch_async(dispatch_get_main_queue(), ^{ 
       // You can use the event store now 
      }); 
     } 
    }]; 
} else if (authorizationStatus == EKAuthorizationStatusAuthorized) { 
    // You can use the event store now 
} else { 
    // Access denied 
} 

आपको लगता है कि ऐसा नहीं करना चाहिए पहले प्रक्षेपण पर है, हालांकि। केवल इसकी आवश्यकता होने पर पहुंच का अनुरोध करें और यह तब तक मामला नहीं है जब तक उपयोगकर्ता कोई ईवेंट जोड़ने का निर्णय नहीं लेता।

+0

क्या मुझे इसके बाद आईओएस 6 सिम्युलेटर पर प्रॉम्प्ट देखने की ज़रूरत है? क्योंकि अभी मैं नहीं हूं और कैलेंडर के तहत मेरी गोपनीयता खाली है – Segev

+0

@ एसएच सामान्य है। आईफोन सिम्युलेटर में गोपनीयता अलर्ट प्रदर्शित नहीं होते हैं। एक वास्तविक डिवाइस पर परीक्षण करें। –

+0

मेरे पास आईओएस 6 डिवाइस आसान नहीं है। वे सिम्युलेटर में एक गोपनीयता अनुभाग क्यों डालेंगे जो पढ़ता है "आपके कैलेंडरों तक पहुंच का अनुरोध करने वाले एप्लिकेशन यहां दिखाई देंगे"? गलत लगता है – Segev

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