特定のデバイスの iOS 6 でユーザーのアドレス帳にアクセスできません。奇妙なことに、自分のデバイスでテストすると機能します。
アプリはユーザーにアドレス帳へのアクセスを要求することはなく、私のアプリはデバイスの [設定] -> [プライバシー] -> [連絡先] にリストされていません (それは私のものです)。
これが私のコードです。何か間違っているかどうか教えてください。
- (void)addressBookWithCompletion:(void (^)(NSArray *addressBook, NSError *error))completion {
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);
dispatch_async(queue, ^{
CFErrorRef error = NULL;
ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, &error);
ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {
if (error || !granted) {
NSLog(@"%@", error);
dispatch_async(dispatch_get_main_queue(), ^{
completion(nil, (__bridge NSError *)(error));
});
} else {
CFArrayRef allContacts = ABAddressBookCopyArrayOfAllPeople(addressBook);
// ... do stuff ...
CFRelease(addressBook);
dispatch_async(dispatch_get_main_queue(), ^{
completion(arrayOfContacts, nil);
});
}
});
});
}