1

プッシュ通知を使用するアプリを作成しようとしています。サードパーティ サーバーとアプリケーション開発の両方ですべての作業を完了し、通知が正常に送信されました。

アプリケーションのこの特定の部分では、ユーザーは特定のサービスを介して GCM とサードパーティ サーバーに登録し、サードパーティ サーバーにフットボールの試合をアップロードして、試合終了時に通知を受け取ります。

私が直面している問題は、アプリをアンインストールすると、(メッセージを送信しているときに) GCM サーバーが NotConnected エラーで応答しないことです。そのため、アプリを再インストールすると、GCMRegistrar が新しい登録 ID を提供し、これによりサーバーが同じユーザーに対して 2 つの異なる登録 ID を持つようになります。

正規IDの助けを借りてこの問題を解決できますが。特にGoogleは言う

"canonical_ids": 1    
"results": [{ "message_id": "1:2342", "registration_id": "32" }]

成功しましたが、サーバー データベースで登録 ID を更新する必要があります (23 から 32 に)

したがって、Google のアドバイスを聞いて、登録 ID を古い (動作中の) ID に変更すると、あとでアプリケーションが新しい登録 ID を使用して、この特定の新しい登録 ID を使用してフットボールの試合をサーバーに送信し、サーバーは、この情報を保存する場所を認識しません。

登録 ID はユーザーの ID ではなく、登録されたデバイスの ID であることを知っています。

私の最初の考えは、サーバーに異なる登録 ID を持たせることです。そのため、正規 ID を取得すると、それを無視します。私はこの考えが好きではありませんが...

2番目に考えたのは、登録IDを古いものに変更して、何らかの方法でアプリに更新することです...

私の状況にどちらが適しているか誰か教えてもらえますか? プッシュ通知を使うのはこれが初めてです...

4

1 に答える 1

0

したがって、Googleのアドバイスを聞いて、登録IDを古い(機能している)IDに変更すると

これは、Google が指示することの反対です。DB から古い ID を削除し、新しい登録 ID のみを保持することをお勧めします。

関連する引用は次のとおりです。

正規 ID

サーバー側では、アプリケーションが正常に動作している限り、すべて正常に動作するはずです。ただし、アプリケーションのバグによって同じデバイスに対して複数の登録がトリガーされると、状態を調整するのが難しくなり、メッセージが重複してしまう可能性があります。

GCM は、これらの状況から簡単に回復するために、「正規登録 ID」と呼ばれる機能を提供します。正規登録 ID は、アプリケーションによって要求された最後の登録の ID として定義されます。これは、サーバーがデバイスにメッセージを送信するときに使用する ID です。

後で別の登録 ID を使用してメッセージを送信しようとすると、GCM は通常どおりリクエストを処理しますが、レスポンスの registration_id フィールドに正規の登録 ID が含まれます。サーバーに保存されている登録 ID をこの正規 IDに置き換えてください。最終的には、使用している ID が機能しなくなります。

于 2013-08-20T17:56:11.893 に答える