iOS ContactsUI框架权限

时间:2016-04-22 07:53:16

标签: ios permissions app-store submission contactsui

我使用CNContactPickerViewController提取联系人,似乎iOS并没有自动询问我的访问权限。

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

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

注意ContactsUI Framework documentation中没有任何说明。

4 个答案:

答案 0 :(得分:5)

使用CNContactPickerViewController时不需要权限。

CNContactPickerViewController州的文档:

  

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

答案 1 :(得分:1)

我想使用ContactsUI API不需要权限,因为它在Contacts Framework Reference中说明权限只会在CNContactStore的调用中显示(仅限第一次)。

  

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

<强>来源:

Apple的Contacts Framework Reference

答案 2 :(得分:0)

使用Contacts&amp; ContactsUI框架,您需要使用以下方法检查授权状态:CNContactStore.authorizationStatusForEntityType()。然后检查枚举值CNAuthorizationStatus,您需要.Authorized

如果状态为.Denied.NotDetermined,您可以请求使用方法requestAccessForEntityType()访问联系人,请参阅CNContactStore课程了解相关信息。

答案 3 :(得分:-1)

检查Apple example。简而言之,您需要检查(switch-case)ABAddressBookGetAuthorizationStatus(),如果值为kABAuthorizationStatusAuthorized,则用户已授予对其联系人的访问权限。 如果授权状态为kABAuthorizationStatusNotDetermined,您甚至可以使用方法[CNContactStore requestAccessForEntityType:completionHandler:]来请求地址簿访问。