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

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

記事内に広告を含む場合があります。記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。

    

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

アプリからiOSのカレンダー情報にアクセスするためには、まずユーザーから許可を得る必要があります。

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

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

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

authorizationStatusForEntityType:メソッド

IMG 6434

    

+ (EKAuthorizationStatus)authorizationStatusForEntityType:(EKEntityType)entityType

EKEventStoreのauthorizationStatusForEntityType:メソッドを呼び出すと、ユーザーがアプリに対してカレンダー・リマインダーへのアクセスを許可しているのか拒否しているのかを確認することができます。

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

    

返り値 説明
EKAuthorizationStatusNotDetermined ユーザーにまだアクセスの許可を求めていない場合
EKAuthorizationStatusRestricted iPhoneの設定の「機能制限」でカレンダー・リマインダーへのアクセスを制限している場合
EKAuthorizationStatusDenied カレンダー・リマインダーへのアクセスをユーザーから拒否されている場合
EKAuthorizationStatusAuthorized カレンダー・リマインダーへのアクセスをユーザーが許可している場合

    

requestAccessToEntityType:completion:メソッド

IMG 6430

    

- (void)requestAccessToEntityType:(EKEntityType)entityType completion:(EKEventStoreRequestAccessCompletionHandler)completion

    

ユーザーに対して、カレンダー・リマインダーにアクセスする許可を求めます。

ユーザーが「OK」か「許可しない」のどちらかをタップすると、completionに渡したハンドラが呼ばれます。

    

EKEventStoreRequestAccessCompletionHandlerハンドラ

typedef void (^EKEventStoreRequestAccessCompletionHandler)(BOOL granted, NSError *error);

    

requestAccessToEntityType:completion:メソッドに渡すハンドラです。

ユーザーが「OK」をタップした場合は、grantedにtrueが入ります。

ユーザーが「許可しない」をタップした場合は、grantedにfalseが入ります。

    

コード例

コード例を以下に示します。

    

	self.eventStore = [[EKEventStore alloc] init];

    EKAuthorizationStatus status = [EKEventStore authorizationStatusForEntityType:EKEntityTypeEvent];
    
    switch (status) {
        case EKAuthorizationStatusNotDetermined:
            [self.eventStore requestAccessToEntityType:EKEntityTypeEvent
                                            completion:^(BOOL granted, NSError *error)
            {
                if(granted){
                    [self fetchEventsAndDisplay];
                }else{
                    
                }
            }];
            break;
        case EKAuthorizationStatusDenied:
        case EKAuthorizationStatusRestricted:
            [self presentError];
            break;
        case EKAuthorizationStatusAuthorized:
            [self fetchEventsAndDisplay];
            break;
        default:
            break;
    }

    

あとがき

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

    

関連記事

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

lolipop アップルの開発者向けイベント「WWDC2014」

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

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

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

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

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

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

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

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

→もっと見る

PAGE TOP ↑