サーバーから定期的に APN を受信するアプリケーションがあります。開始時に registerForRemoteNotificationTypes を呼び出し、定期的に (作業中に) 再要求します。デバイス トークンを正しく受信し、後で使用するためにバックステージ サーバーに送信します。
しかし、問題があります:
-アプリの起動後、アプリの起動時にiphoneによって生成されたデバイストークンを介してサーバーから送信されたすべてのapnsを正しく受信します。
-しかし、アプリが(再起動せずに)8〜12時間ほどバックグラウンドに留まると、何も
受信しなくなります-アプリ/サーバーログを確認すると、アプリが定期的にregisterForRemoteNotificationTypesを介して新しいトークンを適切に再要求し、まったく同じトークンを適切に受信することがわかりますバックステージサーバーは最初からapnsを送信し、ソケットを介してエラーなしでAppleに送信するためにそれを使用し続けて
います
-しかし、メッセージは単にデバイスに表示されなくなり、didReceiveRemoteNotificationはまったく呼び出されません
-アプリを手動で終了して再起動すると役立ちます-registerForRemoteNotificationTypes別のものを返すトークンは非常にうまく機能します-サーバーはそれを使用してapnsを送信し、デバイスは予想どおりすぐにそれらを受信します.
そのため、iPhoneはアプリの起動時にのみトークンをAppleサーバーに再要求し、それをハードキャッシュしているようです。しかし、トークンにはまだ ttl 期間のようなものがあります。
アプリが要求するたびに、iPhoneに新しい実際のデバイストークンを強制的に返す方法はありますか? iPhoneにAppleサーバーのデバイストークンを強制的に再チェックさせて、本当に正常で正常であることを確認する方法は?
助けてください!
UPD:問題を絞り込むことができました-サンドボックスAPN環境を使用して問題のアプリ(開発中のため)-APN送信手順を拡張プロトコルに変更しましたが、しばらくするとaplleサンドボックスサーバーがエラー8で応答し始めました-無効なトークン. 同時に、デバイスは registerForRemoteNotification から同じ古いトークンを受け取ります。したがって、iOSによるトークンのリフレッシュには間違いなく問題があります