iOS7でのAPNSデバイストークンに関する挙動について
iOS7まではAPNSのデバイストークンはデバイス毎にユニークでしたが、iOS7からは、デバイス毎、アプリ毎にユニークになりました。
iOS7にアップデートした端末では、各アプリでいままで付与されていたデバイストークンとは別のデバイストークンが割り当てられます。
それじゃあ今までのデバイストークンはつかえなくなっちゃうの?それはどのタイミングで?ってことがプッシュ界隈(←どのあたり?)では気にされているかと思います。
そこでテスト端末をつかってiOS7のアップデートを行い、その辺の挙動を確認してみました!
念のためですが、以下はあくまで実験した結果なので、これがAPNSの仕様であるということではありません。
1.新しいデバイストークンの割当
iOS7にアップデート後にアプリを起動し、registerForRemoteNotificationTypes:メソッドをコールすると新しいデバイストークンが割り当てられます。
2.新しいデバイストークンが有効になるタイミング
これは少しタイムラグがありました。
作業実施日午後に新デバイストークンを割り当てたのですが、その直後は新デバイストークンでのプッシュ送信はできませんでした。
翌日朝に再度新デバイストークンでプッシュを試みると、プッシュできました。
新デバイストークンでプッシュできるようになるまでは、旧デバイストークンで送信することができました。
このタイムラグはたまたまなのかな~?
3.新しいデバイストークンが有効になった後の旧デバイストークン
新デバイストークンでプッシュできるようになったタイミングで、旧デバイストークンでの送信はできなくなりました。
ちなみに拡張書式でAPNSを送信しても、エラーは返ってきませんでした。
また旧デバイストークンが使用できなくなった後、フィードバックサービスより旧デバイストークンが返却されました。
というわけで、新しいデバイストークンで送信するまでは、旧デバイストークンがひきつづきつかえるので、今までサーバに保存されたデバイストークンがいきなりつかえなくなるということはなさそうです。
新しいデバイストークンで送信するということは、既にサーバに新しいデバイストークンがわたってきているということなので、以降は新デバイストークンで送信するようにすれば問題ないですね。
もしかして、新デバイストークンが割り振られたタイミングで旧デバイストークンはつかえなくなっちゃうの??サーバに新デバイストークンを保存するまではプッシュできなくなっちゃうの??さすがのAppleもそこまでしないよなー、でもAppleだからなーと危惧しましたがそんなことはなさそうです。
だれかの参考になれば!