アドレス帳にアクセスしているアプリをiOS 6のプライバシー設定に対応させる方法

公開日: : 最終更新日:2012/12/19 iOSアプリ開発

    

こんにちは。アキオ(@akio0911)です。

iOS 6からプライバシー設定が追加されました。

そこで今回は、アドレス帳にアクセスしているアプリをiOS 6のプライバシー設定に対応させる方法を解説したいと思います!

もし間違いなどありましたら、@akio0911までご指摘頂けると助かります。

スポンサード リンク

ABAddressBookGetAuthorizationStatus関数

ABAuthorizationStatus ABAddressBookGetAuthorizationStatus (void);

    

IMG 6407

ユーザーがアプリに対してアドレス帳へのアクセスを許可しているのか拒否しているのかを確認することができます。

返り値の意味は以下の通りです。

    

返り値 説明
kABAuthorizationStatusNotDetermined ユーザーにまだアクセスの許可を求めていない場合
kABAuthorizationStatusRestricted iPhoneの設定の「機能制限」でアドレス帳へのアクセスを制限している場合
kABAuthorizationStatusDenied アドレス帳へのアクセスをユーザーから拒否されている場合
kABAuthorizationStatusAuthorized アドレス帳へのアクセスをユーザーが許可している場合

        

ABAddressBookRequestAccessWithCompletion関数

void ABAddressBookRequestAccessWithCompletion (
   ABAddressBookRef addressBook,
   ABAddressBookRequestAccessCompletionHandler completion
);

    

IMG 6383

ユーザーに対して、アドレス帳にアクセスする許可を求めます。

ユーザーが「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までご指摘頂けると助かります。

    

関連記事

この動画を含む日記

iPhoneのUI設計思想を理解する

iPhoneのUIが最高のものかどうかはさておき、その設計思想を知っておいても損はないと思う。

記事を読む

skitched-20121211-202605.jpg

【Xcode】アニメーションでビューを動かす方法

     こんにちは。iPhoneアプリ開発に関する記事をコツコツ書いているアキオ(@

記事を読む

skitched-20121011-184226.png

iOSのEventKitでiPhoneのカレンダー情報を読み取る方法

    こんにちは。アキオ(@akio0911)です。 先日はカレンダー・リマイ

記事を読む

20140416-192437.jpg

【iPhoneアプリ開発】UINavigationBarに複数のUIBarButtonItemを配置する方法

UINavigationBarの左側や右側に、複数のUIBarButtonItemを配置する

記事を読む

20140415-190441.jpg

【iPhoneアプリ開発】UIStepperの見た目をカスタマイズする方法

以前にUIStepperの使い方を解説する記事を書きましたが、 iOS5で搭載された新

記事を読む

skitched-20110924-214605.jpg

第11回 南東京iPhone開発者勉強会に参加してきました

南東京iPhone開発者勉強会 11回目に参加してきました。 会場となった

記事を読む

dash-20130802-1818.jpg

【iOSアプリ開発】Dashでドキュメントのページ内を素早く検索する方法があった!

     以前紹介記事を書いた、クラスリファレンスを素早く検索・表示できるMacアプリ

記事を読む

no image

iPhoneゲーム

爆発をもっと格好良くしたいですね。

記事を読む

skitched-20130517-135149

第14回 iPhoneアプリ開発もくもく会を開催しました。そして第15回の告知

     昨日(5月16日)、渋谷のコワーキングスペース「Lightningspot」

記事を読む

skitched-20121219-175747

iOSで方角を取得する方法

CLLocationManagerを初期化する。 CLLocationMan

記事を読む

20140714-144729.jpg
サンフランシスコのピア39にあるチャウダーズでクラムチャウダーを食す!

アップルの開発者向けイベント「WWDC2014」に参加するため

slooProImg_20140714064146.jpg
ミスドのカルピスドーナツとカルピスポンデリングを食べてみた!

ミスドで期間限定のカルピスコラボ商品「カルピスドーナツ」と「カルピ

slooProImg_20140713230358.jpg
十三カレー計画で牛すじカレーネギのせを食す!(大阪・十三)

「iPhoneアプリ開発キャンプ@大阪」のランチで、十三カレー計画

slooProImg_20140712085918.jpg
大阪・難波の加寿屋 法善寺でかすうどんを食す。ランチタイムはおにぎり2個まで無料!

大阪・難波の加寿屋 法善寺 (かすうどん KASUYA)で、かす

20140625-114250.jpg
ライブドアブログで運営していた「あきお商店」を「卵は世界である」に改名しました

少し前からライブドアブログで「あきお商店」というブログをやって

→もっと見る

PAGE TOP ↑