iOS ContactsUI 框架权限

iOS ContactsUI Framework Permissions

我正在使用 CNContactPickerViewController 获取联系人,iOS 似乎不会自动询问我访问权限。

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

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

: ContactsUI Framework documentation.

中没有说明

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

Users can grant or deny access to contact data on a per-application basis. Any call to CNContactStore will block the application while the user is being asked to grant or deny access. Note that the user is prompted only the first time access is requested; any subsequent CNContactStore calls use the existing permissions.

来源:

苹果的Contacts Framework Reference

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

请求访问地址簿

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

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

使用 CNContactPickerViewController 时不需要许可。

CNContactPickerViewController 的文档指出:

The app using contact picker view does not need access to the user’s contacts and the user will not be prompted for “grant permission” access. The app has access only to the user’s final selection.