আমার জন্য এটাই নিখুঁত কৌশল!
আইওএস On-এ, অ্যাপল নতুন গোপনীয়তা নিয়ন্ত্রণ প্রবর্তন করে, ব্যবহারকারী প্রতিটি অ্যাপ্লিকেশন দ্বারা যোগাযোগ এবং ক্যালেন্ডারের অ্যাক্সেসকে নিয়ন্ত্রণ করতে পারে। সুতরাং, কোড সাইডে, আপনাকে অনুমতিটির জন্য অনুরোধ করার জন্য কিছু উপায় যুক্ত করতে হবে। আইওএস 5 বা এর আগে আমরা সর্বদা কল করতে পারি
ABAddressBookRef addressBook = ABAddressBookCreate();
কোনও সমস্যা ছাড়াই ঠিকানাবুক পেতে, তবে আইওএস 6-এ, আপনার যদি অনুমতি না থাকে, এই কলটি খালি পয়েন্টারটি ফিরিয়ে দেবে। এজন্য ABAddressBookRef পেতে আমাদের পদ্ধতিটি পরিবর্তন করতে হবে।
__block BOOL accessGranted = NO;
if (ABAddressBookRequestAccessWithCompletion != NULL) { // we're on iOS 6
dispatch_semaphore_t sema = dispatch_semaphore_create(0);
ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {
accessGranted = granted;
dispatch_semaphore_signal(sema);
});
dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
dispatch_release(sema);
}
else { // we're on iOS 5 or older
accessGranted = YES;
}
if (accessGranted) {
// Do whatever you want here.
}
কোডে, সেম্যাফোরটি প্রতিক্রিয়া অবধি অবরুদ্ধ করার জন্য ব্যবহৃত হয়, যখন অ্যাপ্লিকেশন আগে জিজ্ঞাসা না করত তবে ABAddressBookRequestAccessWithCompletion অনুমতি চাইবে। অন্যথায় এটি সেটিংস-গোপনীয়তা-পরিচিতিতে সেটিংস অনুসরণ করবে।
উত্স: http://programmerjoe.blogspot.com/2012/10/ios6-perifications-contacts.html