我正在使用CNContactPickerViewController
,iOS 似乎不会自动向我询问访问权限。
我真的需要使用权限CNContactPickerViewController
还是需要手动请求权限?
如果我需要为此权限,如果我将此应用程序提交到 App Store 并且我没有请求联系人权限,我的应用程序会被拒绝吗?
注意: ContactsUI 框架文档中没有任何说明。
我正在使用CNContactPickerViewController
,iOS 似乎不会自动向我询问访问权限。
我真的需要使用权限CNContactPickerViewController
还是需要手动请求权限?
如果我需要为此权限,如果我将此应用程序提交到 App Store 并且我没有请求联系人权限,我的应用程序会被拒绝吗?
注意: ContactsUI 框架文档中没有任何说明。
使用时不需要权限CNContactPickerViewController
。
CNContactPickerViewController的文档指出:
使用联系人选择器视图的应用不需要访问用户的联系人,并且不会提示用户“授予权限”访问权限。该应用程序只能访问用户的最终选择。
我猜想使用 ContactsUI API 不需要权限,因为它在Contacts Framework Reference中声明权限只会在调用CNContactStore
.
用户可以基于每个应用程序授予或拒绝对联系人数据的访问权限。
CNContactStore
当用户被要求授予或拒绝访问权限时,任何调用都会阻止应用程序。请注意,仅在第一次请求访问时才会提示用户;任何后续CNContactStore
调用都使用现有权限。
来源:
Apple 的联系人框架参考
使用Contacts
&ContactsUI
框架时,需要用这个方法检查授权状态:CNContactStore.authorizationStatusForEntityType()
. 然后你检查枚举值CNAuthorizationStatus
,你想要.Authorized
。
如果 status 是.Denied
或者.NotDetermined
您可以使用 method 请求访问联系人requestAccessForEntityType()
,请参阅CNContactStore
类以获取信息。
检查这个Apple 示例。简而言之,您需要检查 (switch-case) for ABAddressBookGetAuthorizationStatus()
,如果 value 是kABAuthorizationStatusAuthorized
用户已授予对其联系人的访问权限。如果授权状态是kABAuthorizationStatusNotDetermined
,你甚至可以使用方法请求通讯录访问[CNContactStore requestAccessForEntityType:completionHandler:]
。