2016-05-09 4 views
0

私はInstanceIdを使用してIDとトークンを取得し、アプリケーションのどこかに保存しています。アプリを再インストールした後、新しいトークンとIDを取得しました。 gcmを通してメッセージを送信するために古いトークンとidを使用している場合、成功を示します。しかし、私がメッセージを送信するためにトークンだけを使用すると、それは標準的に表示されます。誰かがこれを詳細に説明できますか?InstanceIdを使用したGcmトークンとの混乱

例 - >結果:

1) "oldId:oldToken" - >成功

2) "oldToken" - 新しいトークン

3と>成功とカノニカル)「NEWID:newToken " - >成功

4)『newToken』 - >成功

私は第一の例では、問題を持っている:なぜ正規のと新しいトークンを示していないということでしょうか?

チェックリンクは:click here

答えて

0

GoogleのGCMサーバにサーバからメッセージを送信するときCanonicalのIDが応答で返されることに注意します。 canonical registration IDは、クライアントアプリケーションによって要求された最後の登録の登録トークンです。これは、サーバーがメッセージをデバイスに送信する際に使用するIDです。このthreadから

は、Googleからの応答で正規の登録IDを受け取り、メッセージはGCMサーバとGCMサーバがデバイスに配信しようと受け入れられました。それが実際にデバイスに送信されるかどうかは、そのデバイスが利用可能である(すなわち、インターネットに接続されている)かどうかに依存する。したがって、サーバーが古いIDと新しいIDの両方にGCMメッセージを送信すると、おそらく2つのメッセージが表示されます。

正規の登録IDは、アプリケーションによって要求された最後の登録のIDであると定義されています。これは、サーバーがメッセージをデバイスに送信する際に使用するIDです。後で別の登録IDを使用してメッセージを送信しようとすると、GCMは通常どおりリクエストを処理しますが、応答のregistration_idフィールドに正式な登録IDが含まれます。サーバーに保存されているregistration IDをこのcanonical IDに置き換えてください。

しばらくの間、古い登録IDを有効にしておくことができます。しかし、送信されたメッセージに応答してcanonical IDを使用して、特定のデバイス/アプリの組み合わせのregidを更新する必要があることをGoogleからお知らせします。

チェックこの関連のSOの質問:

関連する問題