我有一个使用地址簿的应用程序。在iOS 6中运行时,它会在用户做某些需要通讯录访问的内容时运行此代码。当用户更改时,iOS 6崩溃了联系人访问权限
if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusNotDetermined)
{
ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(NULL, NULL);
ABAddressBookRequestAccessWithCompletion(addressBookRef, ^(bool granted, CFErrorRef error)
{
if (granted)
{
showContactChooser();
}
});
CFRelease(addressBookRef);
}
else if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusAuthorized)
{
showContactChooser();
}
else
{
showAccessDeniedAlert();
}
这完美的作品:我能够读取联系人信息,并在用户拒绝访问,应用程序相应地做出反应。
然而,如果用户:
- 允许在应用中的联系人访问,
- 退出该应用,
- 转到设置 - >与隐私>通讯录和禁用该应用联系人访问,
- 当应用程序在后台运行,运行的应用程序,
- 去设置并启用了应用程序联系访问,
该应用程序立即崩溃main()
内没有异常信息或有意义的堆栈跟踪。我尝试打开“所有例外”和[NSException raise]
断点,但那并没有提供任何更多信息。
即使应用程序在启动期间没有运行上述代码,也可以复制崩溃。
这里发生了什么?是否有我应该订阅的回调?
根据rmaddy的回答,这不是崩溃,它是iOS终止应用程序。 –
对我来说也是同样的问题,但它是为我的应用程序的位置权限:( –