2014年9月29日月曜日

[iOS8][Xcode6] DeviceTokenの取得方法が変わった

今までは、以下の様な処理で、
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
  (UIRemoteNotificationTypeBadge|
  UIRemoteNotificationTypeAlert|
  UIRemoteNotificationTypeSound)];

appDelegate内の

- (void) application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken


- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
にそのレスポンスが返ってきてた。

iOS8からその取得方法が変更になってます。


if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0){
        // iOS8の場合の処理.
    UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:(UIRemoteNotificationTypeBadge
|UIRemoteNotificationTypeSound
|UIRemoteNotificationTypeAlert) categories:nil];
    [[UIApplication sharedApplication] registerUserNotificationSettings:settings];
#else
    // 今まで通りの処理.
         [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge|
                                                                                UIRemoteNotificationTypeAlert|
                                                                                UIRemoteNotificationTypeSound)];
#endif
帰ってくる先のメソッドは今までと同じです。

これ知らないとやられます。笑