【问题标题】:Contact Usage permission request iphone联系使用权限请求 iphone
【发布时间】:2013-07-31 12:38:51
【问题描述】:

我的应用被苹果审核团队拒绝。据他们说原因是

"17.1:应用程序不能在未经用户事先许可和向用户提供访问权限的情况下传输有关用户的数据 有关如何以及在何处使用数据的信息。具体而言, 您的应用无需请求权限即可访问用户联系人 第一个”

但是,我在info.plst 中使用了**NSContactsUsageDescription** 键来指定在我的应用中使用联系人的原因。

我还需要做什么才能获得许可?

【问题讨论】:

  • 您的消息是否明确说明您将发送数据、发送到何处、将存储多长时间、将用于什么用途?该应用支持哪些 iOS 版本?
  • 没有。但是他们提到他们没有收到弹出窗口。而且我没有将联系人发送到任何地方。我只是用它来显示或添加联系人。

标签: iphone ios appstore-approval privacy


【解决方案1】:

在 iOS 6 中,您需要使用地址簿权限请求 iphone 来访问它的设备联系人:-

实现代码如本例的方法:

ABAddressBookRef addressBook;
if ([self isABAddressBookCreateWithOptionsAvailable]) {
    CFErrorRef error = nil;
    addressBook = ABAddressBookCreateWithOptions(NULL,&error);
    ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {
        // callback can occur in background, address book must be accessed on thread it was created on
        dispatch_async(dispatch_get_main_queue(), ^{
            if (error) {

            } else if (!granted) {


            } else {
                // access granted
                 [self GetAddressBook];


            }
        });
    });
} else {
    // iOS 4/5

     [self GetAddressBook];
}

【讨论】:

  • 不是每次都授予 OK 权限,然后不会出现警报。
  • 使用 NSContactUsageDescription 键后,这个弹窗在安装时会在新设备中显示。我想使用这种方法我可以知道应用程序当前是否具有联系人使用权限,是吗?
【解决方案2】:

您必须询问用户您的应用程序是否可以访问您的地址簿。此功能在 iOS 6.0 及更高版本中实现。

你可以试试这段代码片段:

#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)

- viewWillAppear:

// Asking access of AddressBook
// if in iOS 6
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"6.0")) 
{ 
    // Request authorization to Address Book
    addressBook_ = ABAddressBookCreateWithOptions(NULL, NULL);

    if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusNotDetermined)
    {
         ABAddressBookRequestAccessWithCompletion(addressBook_, ^(bool granted, CFErrorRef error)
                                                 {
                                                     if (granted == NO)
                                                     {
                                                         // Show an alert for no contact Access
                                                     }
                                                 });
    }
    else if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusAuthorized)
    {
        // The user has previously given access, good to go
    }
    else
    {
        // The user has previously denied access
        // Send an alert telling user to change privacy setting in settings app
    }
}
else // For iOS <= 5
{
    // just get the contacts directly
    addressBook_ = ABAddressBookCreate();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-04
    • 1970-01-01
    • 1970-01-01
    • 2020-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多