重複の可能性:
iOS 6 で連絡先へのアクセスをプログラムで要求する
すべてのアドレス帳のメンバーを取得して表に表示する機能を iPhone でテストしようとしています。これはシミュレーターで正常に動作し、「John Appleseed」のような模擬連絡先が表示されます。iPhone でコードを実行すると、どうやら私である「モバイル ユーザー」しか表示されません。
アドレス帳のすべての連絡先を表示するにはどうすればよいですか?
重複の可能性:
iOS 6 で連絡先へのアクセスをプログラムで要求する
すべてのアドレス帳のメンバーを取得して表に表示する機能を iPhone でテストしようとしています。これはシミュレーターで正常に動作し、「John Appleseed」のような模擬連絡先が表示されます。iPhone でコードを実行すると、どうやら私である「モバイル ユーザー」しか表示されません。
アドレス帳のすべての連絡先を表示するにはどうすればよいですか?
iOS 6 では、ユーザーはアプリに連絡先情報を使用する許可を与える必要があります。
グーグルで検索すると、このような例がたくさんあります。次のようなものを使用できます。
ABAddressBookRef addressBook = ABAddressBookCreate();
__block BOOL accessGranted = NO;
if (ABAddressBookRequestAccessWithCompletion != NULL) { // we're on iOS 6
dispatch_semaphore_t sema = dispatch_semaphore_create(0);
ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {
accessGranted = granted;
dispatch_semaphore_signal(sema);
});
dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
dispatch_release(sema);
}
else { // we're on iOS 5 or older
accessGranted = YES;
}
if (accessGranted) {
// Do whatever you want here.
}
詳細については、この質問を確認してください: プログラムで連絡先へのアクセスを要求する