2015-10-15 29 views
0

我从通讯录提取联系人,但弹出窗口不显示要求访问联系人的权限。它会自动拒绝,但是当我在演示中尝试相同的代码时,它会正常运行,但它不会在我的应用程序中运行。 我读过很多文章,但我没有得到任何解决方案。我是否在plist或设置中缺少某些东西?流行的请求访问联系人不显示ios 9

CNContactStore * contactStore = [[CNContactStore alloc]init]; 

    if ([CNContactStore authorizationStatusForEntityType:CNEntityTypeContacts] == CNAuthorizationStatusNotDetermined) { 
     [contactStore requestAccessForEntityType:CNEntityTypeContacts completionHandler:^(BOOL granted, NSError * __nullable error) { 

      if (granted==YES) 
      { 


      } 
      else 
      { 
       NSLog(@"Error"); 
      } 
     }]; 
    } 

或第二种方法

CFErrorRef error = nil; 
    ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, &error); 

    if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusNotDetermined) { 

    ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) 
    { 
     if (error) 
     { 
      NSLog(@"error %@", error); 
     } 
     else if (granted) 
     { 

} 
     CFRelease(addressBook); 
    }); 

    } 
+0

是的,但我已经完成重置设备和模拟器。多次。 –

+0

打印_userInfo的描述: { NSLocalizedDescription =“访问被拒绝”; NSLocalizedFailureReason =“此应用程序未被授予访问联系人的权限。”; } –

+0

我不会在info.plist中添加任何内容。 –

回答

3

我今天也有这个问题,我删除了一些键值从Info.plist中:

<key>CFBundleDisplayName</key> 
<string></string> 
<key>LSApplicationCategoryType</key> 
<dict/> 
<key>CFBundleGetInfoString</key> 
<string></string> 

它现在。有线案例。

+1

谢谢..我不得不删除'CFBundleDisplayName' ..其他人不在那里:) ......奇迹般的wat导致这个 –

+0

它没有为我工作。 – Chandni

0

我有同样的问题。科迪的回答让我尝试了这对我有用的东西。

在您的Info.plist中,对于“Bundle display name”键,请确保它不是空字符串。提示联系人权限时使用此名称。

1

在info.plist中输入我的应用程序名称“Bundle display name”键允许我的应用程序显示访问我的联系人的请求。