酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

iOS6からはカレンダーにアクセスする場合、ユーザーへアクセス許可を取る必要がある

カレンダー機能を使うアプリを新規申請出したときにリジェクトされたのでアレ?と思って調べてみた。どうやらカレンダー機能は、iOS6からユーザーのアクセス許可をもらわないといけなくなっていたようだ。

別のアプリではいままで通ってたやん!と思わなくもない。でもユーザーに指摘される前で良かったと思う。

カレンダー・リマインダーへのアクセス許可についてのステータスを取得する

- (BOOL) isAuthorizedEventKit {
    
    BOOL isAuthorized = NO;
    // カレンダー・リマインダーへのアクセス許可についてのステータスを取得する
    EKAuthorizationStatus status
        = [EKEventStore authorizationStatusForEntityType:EKEntityTypeEvent];
    switch (status) {
        case EKAuthorizationStatusNotDetermined:
            // ユーザーからまだアクセス許可をもらっていない
            isAuthorized = YES;
            break;
            
        case EKAuthorizationStatusRestricted:
            // 機能制限によって、アクセスが拒否されている
            break;
            
        case EKAuthorizationStatusDenied:
            // ユーザーによって、アクセスを拒否している
            break;
            
        case EKAuthorizationStatusAuthorized:
            // ユーザーからアクセス許可をもらっている
            isAuthorized = YES;
            break;
    }
    
    return isAuthorized;
}

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

        [eventStore requestAccessToEntityType:EKEntityTypeEvent
                                   completion:^(BOOL granted, NSError *error) {
                                       if (granted) {
                                           // ユーザーからアクセス許可をもらった
                                       } else {
                                           // ユーザーがアクセス拒否した
                                       }
                                   }];