iOS7からデバイストークンが変わるって事で、iOS6の時点でPush登録してそのままのアプリだとiOS7にアップデートしてPush通知が届かないなんてことが起こるそうです。
なのである程度定期的にデバイストークンを再取得してあげて、古いデバイストークンと比較して必要によってはPushサーバへ再送信する必要がある。
AppDelegateの[didRegisterForRemoteNotificationsWithDeviceToken]で引数として最新のデバイストークンが取得できるので、
[didRegisterForRemoteNotificationsWithDeviceToken]を呼ぶために[registerForRemoteNotificationTypes]を呼んであげる必要がある。
※[registerForRemoteNotificationTypes]を呼んでも毎回[didRegisterForRemoteNotificationsWithDeviceToken]が呼ばれるわけではない。
Appleのサーバへ要求を投げるのでサーバ側の負荷軽減の為1日ほど間隔を開けないと[didRegisterForRemoteNotificationsWithDeviceToken]は呼ばれない。
理想としてはアプリ起動時に呼ばれるAppDelegateの[didFinishLaunchingWithOptions]で[registerForRemoteNotificationTypes]を呼ぶ。
取得が成功して[didRegisterForRemoteNotificationsWithDeviceToken]が呼ばれたら、取得できたデバイストークンと保存してあるデバイストークンを比較する。
デバイストークンが変わっていればpush通知登録を行うって流れかな。
[2回]
PR
COMMENT
John
デバイストークンについて