アドレス帳にアクセスしているアプリをiOS 6のプライバシー設定に対応させる方法
公開日:
:
最終更新日:2012/12/19
iOSアプリ開発
記事内に広告を含む場合があります。記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。

こんにちは。アキオ(@akio0911)です。
iOS 6からプライバシー設定が追加されました。
そこで今回は、アドレス帳にアクセスしているアプリをiOS 6のプライバシー設定に対応させる方法を解説したいと思います!
もし間違いなどありましたら、@akio0911までご指摘頂けると助かります。
ABAddressBookGetAuthorizationStatus関数
ABAuthorizationStatus ABAddressBookGetAuthorizationStatus (void);

ユーザーがアプリに対してアドレス帳へのアクセスを許可しているのか拒否しているのかを確認することができます。
返り値の意味は以下の通りです。
| 返り値 | 説明 |
|---|---|
| kABAuthorizationStatusNotDetermined | ユーザーにまだアクセスの許可を求めていない場合 |
| kABAuthorizationStatusRestricted | iPhoneの設定の「機能制限」でアドレス帳へのアクセスを制限している場合 |
| kABAuthorizationStatusDenied | アドレス帳へのアクセスをユーザーから拒否されている場合 |
| kABAuthorizationStatusAuthorized | アドレス帳へのアクセスをユーザーが許可している場合 |
ABAddressBookRequestAccessWithCompletion関数
void ABAddressBookRequestAccessWithCompletion ( ABAddressBookRef addressBook, ABAddressBookRequestAccessCompletionHandler completion );

ユーザーに対して、アドレス帳にアクセスする許可を求めます。
ユーザーが「OK」か「許可しない」のどちらかをタップすると、completionに渡したハンドラが呼ばれます。
ABAddressBookRequestAccessCompletionHandlerハンドラ
typedef void (^ABAddressBookRequestAccessCompletionHandler) ( bool granted, CFErrorRef error );
ABAddressBookRequestAccessWithCompletion関数から呼ばれるハンドラです。
ユーザーが「OK」をタップした場合は、grantedにtrueが入ります。
ユーザーが「許可しない」をタップした場合は、grantedにfalseが入ります。
実際のコード
実際のコード例を以下に示します。
ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL);
if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusNotDetermined) {
ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {
if(granted){
// ユーザーがアドレス帳へのアクセスを許可した場合
[self doSomething];
}else{
// ユーザーがアドレス帳へのアクセスを許可しなかった場合
// アラートを表示するなど
}
});
}else if (ABAddressBookGetAuthorizationStatus() == kABAuthorizationStatusAuthorized) {
// ユーザーがアドレス帳へのアクセスを以前に許可した場合
[self doSomething];
}else{
// ユーザーがアドレス帳へのアクセスを以前に拒否した場合
// アラートを表示するなど
}
あとがき
もし間違いなどありましたら、@akio0911までご指摘頂けると助かります。



