我们也遇到了山姆在我们的应用程序上遇到的同样问题。当用户尝试使用ABPeoplePickerNavigationController
并进入组页面导入联系人时会发生这种情况:
- 有时导航控制器的标题将包含 2 个名称:联系人和组
- 然后点击 OK 按钮可能会很棘手,大多数用户会报告冻结,而只是不可能退出
ABPeoplePickerNavigationController
- 似乎允许访问 Exchange 全局地址列表,但不显示任何数据,只是一个空的 tableView
根据 Sam 的重点,我们考虑明确请求用户访问其通讯簿的权限。由于 iOS 6 引入了这个,我们没有用它来导入联系人,因为它ABPeoplePickerNavigationController
自己处理这个。
无论如何,我们一直在使用:
ABAddressBookRef addressBook = ABAddressBookCreate();
__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.
}
有关更多信息,请参见此处:以编程方式请求访问联系人
这并不能解决问题,因为已正确授予访问权限。
我们确实在设置/常规/重置/重置位置和隐私中重置了隐私设置。
按预期正确请求访问用户的联系人列表,但上述行为仍然相同。
如果有人对如何解决这个问题有任何解释,那就太好了。
问候,