我有一个使用通讯簿的应用程序。在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]断点,但这并没有给我更多信息。
即使该应用在启动过程中未运行上述代码,也可以重现崩溃。
这里发生了什么事?我应该订阅一个回调吗?
慕尼黑的夜晚无繁华
九州编程
浮云间
相关分类