4

我正在使用CNContactPickerViewController,iOS 似乎不会自动向我询问访问权限。

我真的需要使用权限CNContactPickerViewController还是需要手动请求权限?

如果我需要为此权限,如果我将此应用程序提交到 App Store 并且我没有请求联系人权限,我的应用程序会被拒绝吗?

注意: ContactsUI 框架文档中没有任何说明。

4

4 回答 4

12

使用时不需要权限CNContactPickerViewController

CNContactPickerViewController的文档指出:

使用联系人选择器视图的应用不需要访问用户的联系人,并且不会提示用户“授予权限”访问权限。该应用程序只能访问用户的最终选择。

于 2016-09-12T14:08:35.780 回答
1

我猜想使用 ContactsUI API 不需要权限,因为它在Contacts Framework Reference中声明权限只会在调用CNContactStore.

用户可以基于每个应用程序授予或拒绝对联系人数据的访问权限。CNContactStore当用户被要求授予或拒绝访问权限时,任何调用都会阻止应用程序。请注意,仅在第一次请求访问时才会提示用户;任何后续CNContactStore调用都使用现有权限。

来源

Apple 的联系人框架参考

于 2016-04-22T07:59:26.150 回答
0

使用Contacts&ContactsUI框架时,需要用这个方法检查授权状态:CNContactStore.authorizationStatusForEntityType(). 然后你检查枚举值CNAuthorizationStatus,你想要.Authorized

如果 status 是.Denied或者.NotDetermined您可以使用 method 请求访问联系人requestAccessForEntityType(),请参阅CNContactStore类以获取信息。

于 2016-04-22T08:17:40.343 回答
-1

检查这个Apple 示例。简而言之,您需要检查 (switch-case) for ABAddressBookGetAuthorizationStatus(),如果 value 是kABAuthorizationStatusAuthorized用户已授予对其联系人的访问权限。如果授权状态是kABAuthorizationStatusNotDetermined,你甚至可以使用方法请求通讯录访问[CNContactStore requestAccessForEntityType:completionHandler:]

于 2016-04-22T08:00:00.287 回答