Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
联系使用权限请求iphone_Iphone_Ios_Appstore Approval_Privacy - Fatal编程技术网

联系使用权限请求iphone

联系使用权限请求iphone,iphone,ios,appstore-approval,privacy,Iphone,Ios,Appstore Approval,Privacy,我的应用被苹果审查小组拒绝了。根据他们的说法,原因是 “17.1:未经用户事先许可并向用户提供访问权限,应用程序无法传输有关用户的数据 关于如何以及在何处使用数据的信息。具体而言, 您的应用程序在未请求权限的情况下访问用户联系人 第一个“ 但是,我在我的info.plst中使用了**NSContactsUsageDescription**键来指定在我的应用程序中使用联系人的原因 要获得权限,我还需要做些什么?在iOS 6中,您需要使用通讯簿权限请求iphone来访问其设备联系人:- 实现类似以

我的应用被苹果审查小组拒绝了。根据他们的说法,原因是

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

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


要获得权限,我还需要做些什么?

在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];
}

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

您可以尝试以下代码段:

#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v)  ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
-视图中将出现:

// 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();
}
//请求访问通讯簿
//如果在iOS 6中
如果(系统版本大于或等于(@“6.0”))
{ 
//请求对通讯簿的授权
addressBook=ABAddressBookCreateWithOptions(NULL,NULL);
if(ABAddressBookGetAuthorizationStatus()==kABAuthorizationStatusNotDetermined)
{
ABAddressBookRequestAccessWithCompletion(地址簿^,已授予bool,CFErrorRef错误)
{
如果(已授予==否)
{
//显示无联系人访问的警报
}
});
}
else if(ABAddressBookGetAuthorizationStatus()==kABAuthorizationStatusAuthorized)
{
//用户之前已授予访问权限,很好
}
其他的
{
//用户以前拒绝访问
//发送警报,告知用户更改“设置”应用程序中的隐私设置
}
}

else//对于iOS,您的消息是否明确表示您将发送数据、数据的目的地、存储时间以及数据的用途?应用程序支持哪些版本的iOS?不支持。但是他们提到他们没有弹出窗口。我没有将联系人发送到任何地方。我只是使用它来显示或添加联系人。不是每次您授予“确定”权限时,都会显示警报。使用NSContactUsageDescription键后,安装时此弹出窗口会在新设备中显示联系人。I认为使用这种方法,我可以知道该应用程序当前是否具有联系人使用权限,是吗?