ゆれくるコール開発日誌

ゆれくるコール、あめふるコール、つながるコールや緊急地震速報のことなど

iOS7でのAPNSデバイストークンに関する挙動について

iOS7でプッシュ通知のデバイストークンに大きな変更

iOS7まではAPNSのデバイストークンはデバイス毎にユニークでしたが、iOS7からは、デバイス毎、アプリ毎にユニークになりました。
iOS7にアップデートした端末では、各アプリでいままで付与されていたデバイストークンとは別のデバイストークンが割り当てられます。


それじゃあ今までのデバイストークンはつかえなくなっちゃうの?それはどのタイミングで?ってことがプッシュ界隈(←どのあたり?)では気にされているかと思います。


そこでテスト端末をつかってiOS7のアップデートを行い、その辺の挙動を確認してみました!


念のためですが、以下はあくまで実験した結果なので、これがAPNSの仕様であるということではありません。


1.新しいデバイストークンの割当

iOS7にアップデート後にアプリを起動し、registerForRemoteNotificationTypes:メソッドをコールすると新しいデバイストークンが割り当てられます。


2.新しいデバイストークンが有効になるタイミング

これは少しタイムラグがありました。
作業実施日午後に新デバイストークンを割り当てたのですが、その直後は新デバイストークンでのプッシュ送信はできませんでした。
翌日朝に再度新デバイストークンでプッシュを試みると、プッシュできました。
新デバイストークンでプッシュできるようになるまでは、旧デバイストークンで送信することができました。
このタイムラグはたまたまなのかな~?


3.新しいデバイストークンが有効になった後の旧デバイストークン

新デバイストークンでプッシュできるようになったタイミングで、旧デバイストークンでの送信はできなくなりました。
ちなみに拡張書式でAPNSを送信しても、エラーは返ってきませんでした。
また旧デバイストークンが使用できなくなった後、フィードバックサービスより旧デバイストークンが返却されました。


というわけで、新しいデバイストークンで送信するまでは、旧デバイストークンがひきつづきつかえるので、今までサーバに保存されたデバイストークンがいきなりつかえなくなるということはなさそうです。
新しいデバイストークンで送信するということは、既にサーバに新しいデバイストークンがわたってきているということなので、以降は新デバイストークンで送信するようにすれば問題ないですね。


もしかして、新デバイストークンが割り振られたタイミングで旧デバイストークンはつかえなくなっちゃうの??サーバに新デバイストークンを保存するまではプッシュできなくなっちゃうの??さすがのAppleもそこまでしないよなー、でもAppleだからなーと危惧しましたがそんなことはなさそうです。


だれかの参考になれば!