tsuyushiga's blog

備忘録です。

【Objective-C】iOS8 でプッシュ・ローカル通知の許可アラート表示

iOS8以降の端末でのプッシュ・ローカル通知に関するメモです。
・通知の許可アラートを表示するための方法
・通知を許可しているかどうか確認するための方法
の2点です。
(環境 xcode 6.1: iOS 8.1)

  • 通知の許可アラートを表示するための方法
// AppDelegate.m の - (BOOL)application:didFinishLaunchingWithOptions: メソッドで...
// iOS8以降はこちらでアラート表示
if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) {
    UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:
                                                UIUserNotificationTypeBadge|
                                                UIUserNotificationTypeAlert|
                                                UIUserNotificationTypeSound categories:nil];
    [application registerUserNotificationSettings:settings];
    [application registerForRemoteNotifications];

// iOS8以前はこちらでアラート表示
} else {
    [application registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge|
                                               UIRemoteNotificationTypeAlert|
                                               UIRemoteNotificationTypeSound];
}
  • 通知を許可しているかどうか確認するための方法
NSUInteger types;
if ([[[UIDevice currentDevice] systemVersion] >= 8.0) {
    types = [[[UIApplication sharedApplication] currentUserNotificationSettings] types];
}else{
    types = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
}

// 許可している場合...
if (types != UIRemoteNotificationTypeNone) {
    // 何らかの処理
}

以上です。

※参考
http://qiita.com/caesar_cat/items/08018ab22bea27b55443
http://stackoverflow.com/questions/26091875/how-to-update-code-using-enabledremotenotificationtypes-because-it-is-not-suppo