LoginSignup
81
81

More than 5 years have passed since last update.

【iOS】PUSH通知iOS8対応 〜デバイストークンの取得方法〜

Last updated at Posted at 2014-09-29

iO8でPUSH通知の実装に変更があったので、まずはデバイストークンの取得方法をメモ。

以前はデバイストークンの取得とPUSH許可のアラート表示を一つのメソッドで呼び出す形でしたが、 iOS8ではそれぞれ別メソッドになりました。
なお、PUSH許可のアラートは、iOS7の時と同様一度表示されると以後呼び出しても表示されないようです。

実装例

//メソッドの有無でOSを判別
if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerForRemoteNotifications)]) {

    //iOS8
    //デバイストークの取得
    [[UIApplication sharedApplication] registerForRemoteNotifications];

    //許可アラートの表示
    UIUserNotificationType types = UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert;
    UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:types categories:nil];
    [[UIApplication sharedApplication] registerUserNotificationSettings:settings];

} else {

    //iOS7
    UIRemoteNotificationType types =UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert| UIRemoteNotificationTypeSound;
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:types];
}

デバイストークン取得に成功した際は、以前と同様UIApplicationクラスのregisterForRemoteNotificationTypes:メソッドが呼ばれるので、その中でサーバ側(プロバイダ)にデバイストークンを渡す処理をします。

なお、当たり前かもですがデバイストークンはOSアップデート時やバックアップから復元(機種変更とか)時に変更されることがあるので、デバイストークンの取得・サーバ側へ送信は、アプリ起動時など任意の場所で定期的に呼ぶようにしておいた方が良いです。

もしアプリ初回起動時など一度だけにしてしまってる場合は、修正してアップデートしないとPUSH通知が届かなくなる場合がでてくるのでご注意。

81
81
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
81
81