objective-c - ABAddressBookRequestAccessWithCompletion 在 iOS 10 上崩溃

标签 objective-c abaddressbook ios10

我使用以下代码访问我的 iOS 应用程序中的联系人。它在 iOS<10 中运行良好,但在 Xcode 8 和 iOS 10 中它崩溃了:

- (void)btcContacts_tap {
    ABAddressBookRef addressBook =  ABAddressBookCreateWithOptions(NULL, NULL);
    ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {
        if (granted) {
            _addressBookController = [[ABPeoplePickerNavigationController alloc] init];

            [[_addressBookController navigationBar] setBarStyle:UIBarStyleBlack];

            _addressBookController.delegate = self;
            [_addressBookController setPredicateForEnablingPerson:[NSPredicate predicateWithFormat:@"%K.@count > 0", ABPersonPhoneNumbersProperty]];
            [_addressBookController setPeoplePickerDelegate:self];
            [self presentViewController:_addressBookController animated:YES completion:nil];
        }
        else {
            dispatch_async(dispatch_get_main_queue(), ^{
                [self showMessage:NSLocalizedStringFromTable(@"PLEASE_GRANT_CONTACTS", LIApplicationLanguage(), nil) andAdvertise:@"" andService:nil andTransactionState:kTTTransactionStateInfo];
            });
        }
    });
}

我已经将 NSSetUncaughtExceptionHandler 设置为记录崩溃报告的方法,但即使是异常处理程序也没有调用...

其他人也遇到过这个问题吗?

最佳答案

iOS 10:

您需要将 NSContactsUsageDescription 放入您的 plist 中。喜欢:

<key>NSContactsUsageDescription</key>
<string>$(PRODUCT_NAME) uses photos</string>

查看所有使用说明 here .

关于objective-c - ABAddressBookRequestAccessWithCompletion 在 iOS 10 上崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38282883/

相关文章:

ios - 如何在该 View 内为图像设置动画时捕获 UIView 快照

ios - 如何在快速点击 UITableView 中的一行时获取联系号码(而不是姓名)

iphone - ABRecordCopyValue 和 ABPropertyID 崩溃

ios - 我如何在 iOS 中将 NSNumber 转换为 ABRecordID

swift - Firebase 通知和 Firebase 数据库功能不能在我的应用程序中同时工作

swift - "prefs"URL Scheme 在 iOS 10(Beta 1 和 2)中不起作用

ios - 需要帮助将深度链接路由集成到 Xcode 项目 Obj-C 中的内容

iOS 圆形 slider

ios - 第二次点击单元格时如何折叠展开的单元格?

php - 使用 EasyApns 添加推送通知