2015-10-15 31 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」鍵允許我的應用程序顯示訪問我的聯繫人的請求。