2016-04-22 58 views
1

我使用CNContactPickerViewController提取联系人,而且似乎iOS不会自动询问我的访问权限。iOS联系人UI框架权限

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

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

注意:在ContactsUI Framework documentation没有说明。

回答

0

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

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

来源

苹果Contacts Framework Reference

0

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

+0

谢谢!但是我使用'Contacts'和'ContactsUI'框架,因为'AddressBook'框架已经被弃用了。我不认为他们有类似的API。 – chrisamanse

+0

对不起,我总是使用这个代码,所以我没有仔细阅读.. 简而言之,当使用Contact&ContactUI框架时,您需要使用此方法检查授权状态:'CNContactStore.authorizationStatusForEntityType()'。然后你检查枚举值'CNAuthorizationStatus',你想''授权'。 – Ivan

+0

不用担心。我刚刚在Apple文档中发现了一个声明,这可能表明ContactsUI Framework不需要权限:http://stackoverflow.com/a/36788160/4897074 – chrisamanse

0

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

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

3

使用CNContactPickerViewController时不需要权限。

的文档CNContactPickerViewController状态:

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

相关问题