2016-05-31 8 views
-3
ABAuthorizationStatus status = ABAddressBookGetAuthorizationStatus(); 
if (status == kABAuthorizationStatusNotDetermined) { 
    NSLog(@"未知"); 
    ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL,NULL); 

     ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) { 
      if (granted) { 
       NSLog(@"ok"); 
      } else { 
       NSLog(@"nonono,always here"); 
      } 


      CFRelease(addressBook); 
     }); 
    } 

新しいプロジェクトを作成すると、このコードがコンパイルされます。ABAddressBookRequestAccessWithCompletionは警告なし、常に許可なし

しかし、誰アラートは、私は、変数「状態」は、あなたのコードからあるものを言うことができない与えられていないとビルドには、次のエラー kABAuthorizationStatusNotDetermined状態で失敗し、= nilの

答えて

0

を付与されている私の現在のプロジェクトインチ次のコードを試してみてください。

if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusNotDetermined) { 
     ABAddressBookRef addressBookRef = ABAddressBookCreateWithOptions(nil, nil); 
     ABAddressBookRequestAccessWithCompletion(addressBookRef, ^(bool granted, CFErrorRef error) { 
      if (granted) { 
       //You've got contacts permission 
      } else { 
       //User denied to give permission 
      } 
     }); 
    } 
+0

シミュレータ8、アラートが表示されますが、シミュレータ9ではアラートは表示されません。シミュレータ9の –

+0

、アラートではなく、常に "nonono、always here"と記録します。 –

+0

iOS 9で連絡先を取得するには、CNContactStoreを使用する必要があります。このリンクは、https://gist.github.com/willthink/024f1394474e70904728 – riowww