我无法在某些设备上访问 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);
});
}
});
});
}