【发布时间】:2014-12-11 22:16:30
【问题描述】:
我正在做一些工作,让应用程序与 iOS 8 中的新隐私设置保持一致。我已经令人满意地完成了相机访问要求,现在我正在研究这个应用程序如何访问地址簿.我是使用地址簿 API 的新手,所以这些问题可能有明显的答案。
与相机访问一样,我认为访问联系人的行为与授予应用的隐私设置状态类似。到目前为止,无论 ABAuthorizationStatus 的值是什么 - kABAuthorizationStatusNotDetermined 或 kABAuthorizationStatusDenied - 始终允许访问。
此外,当状态为 kABAuthorizationStatusNotDetermined 时,永远不会向用户显示“好的/不允许”对话框(我已擦除手机并重新安装应用程序以确认)。此外,该应用程序永远不会出现在隐私设置下。我认为这是因为状态始终是 kABAuthorizationStatusNotDetermined。
启动访问联系人的代码如下。显示控制器(只读)并且可以获得联系人信息。未显示委托代码。
// Debug - Value is always denied or not determined.
ABAuthorizationStatus status = ABAddressBookGetAuthorizationStatus();
// Existing code since iOS 7 - always works despite status.
ABPeoplePickerNavigationController *picker = [[ABPeoplePickerNavigationController alloc] init];
picker.peoplePickerDelegate = self;
[self presentViewController:picker animated:YES completion:nil];
一切似乎都正常工作真是太好了,但我想知道我做错了什么。
iPhone 6, iOS 8.0.2, Xcode 6
谢谢!
【问题讨论】:
-
您应该尝试的一件事是设置->常规->重置->隐私和位置。重新安装应用并不会真正重置权限
-
我没有注意到那个选项。让我不必抹掉手机,所以我非常感谢你。
-
经过一些测试,隐私设置在 iOS 7 中得到尊重(在 iPhone 5、iOS 7.1 上测试)。 iOS 8(8.0.2、8.1)似乎不尊重这些设置。
标签: objective-c ios8 addressbook