我使用CNContactPickerViewController
提取联系人,似乎iOS并没有自动询问我的访问权限。
我是否真的需要使用CNContactPickerViewController
的权限,还是需要手动请求权限?
如果我需要此权限,如果我将此应用程序提交到App Store并且我没有要求联系人权限,我的应用程序是否会被拒绝?
注意:ContactsUI Framework documentation中没有任何说明。
答案 0 :(得分:5)
使用CNContactPickerViewController
时不需要权限。
CNContactPickerViewController州的文档:
使用联系人选择器视图的应用程序不需要访问用户的联系人,也不会提示用户进行“授予权限”访问。该应用只能访问用户的最终选择。
答案 1 :(得分:1)
我想使用ContactsUI API不需要权限,因为它在Contacts Framework Reference中说明权限只会在CNContactStore
的调用中显示(仅限第一次)。
用户可以基于每个应用程序授予或拒绝访问联系人数据。在要求用户授予或拒绝访问权限时,对
CNContactStore
的任何调用都将阻止该应用程序。请注意,仅在第一次请求访问时才提示用户;任何后续CNContactStore
次调用都使用现有权限。
<强>来源:
答案 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:]
来请求地址簿访问。