2012-12-19 4 views
9

いくつかのアンドロイドデバイスにプッシュアップデートを送信しようとしています。その間に新しいIDを取得しているユーザーもいるので、標準のIDがあるとGoogleに伝えています。私が読んドキュメントから:REGISTRATION_IDが設定されている場合アンドロイドGCM正規のIDの元のIDを取得

  • 、サーバーのデータベースに新しい値(正規のID)と、元のIDを置き換える:

    をMESSAGE_IDが設定されている場合、REGISTRATION_IDをチェック。元のIDは結果の一部ではないので、リクエストで渡されたregistration_idsのリストから取得する必要があります(同じインデックスを使用)。

Googleに複数の登録IDを送信すると、一部が欠落していますか、あいまいですか?

私の要求(読みやすくするためのIDを置き換え):

"{"data":{"favorite":1},"registration_ids":["1","2","3","4","5","6"]}" 

Googleからの応答は次のとおりです。このことから

{ 
    "multicast_id":7917175795873320166, 
    "success":6, 
    "failure":0, 
    "canonical_ids":4, 
    "results":[ 
    {"registration_id":"3","message_id":"m1"}, 
    {"message_id":"m1"}, 
    {"message_id":"m1"}, 
    {"registration_id":"3","message_id":"m1"}, 
    {"registration_id":"3","message_id":"m1"}, 
    {"registration_id":"3","message_id":"m1"} 
] 
} 

、私はID 3が正しいことを知っているが、オリジナルのIDがIべき3で置き換えますか?登録されたIDごとにすべてのメッセージを送信するのは無駄です。私はStackoverflow(GCM and id handling)でJavaサーバーのためにそれを解決する記事を読んだが、私は(RoR)ではない。

どのようにこの問題を解決するためのアイデアですか?

答えて

15

リンク先の記事で説明したように、レスポンスリストの位置に基づいています。だからあなたが正規のIDを取得するときは、あなたの "送信リスト"の同じ位置に元の登録IDを更新する必要があります。あなたの "リストの送信" で、ここで

[0] {"registration_id":"3","message_id":"m1"}, 
[1] {"message_id":"m1"}, 
[2] {"message_id":"m1"}, 
[3] {"registration_id":"3","message_id":"m1"}, 
[4] {"registration_id":"3","message_id":"m1"}, 
[5] {"registration_id":"3","message_id":"m1"} 

そして:ここにあなたの例ではそう

は、標準的な(0、3、4、5)ある4その結果である

[0] "1", 
[1] "2", 
[2] "3", 
[3] "4", 
[4] "5", 
[5] "6" 

結果に応じて、0,3,4,5の位置の登録IDを3のIDに更新する必要があります。つまり、次のような登録リストが表示されます。

[0] "3", 
[1] "2", 
[2] "3", 
[3] "3", 
[4] "3", 
[5] "3" 

そして最後に:

[0] "3", 
[1] "2", 

も参照してください:https://developer.android.com/google/gcm/adv.html#canonicalhttps://developer.android.com/google/gcm/gcm.html#response

+0

ああ、私はちょうど、アカウントに「MESSAGE_IDを」格納されているエントリを取ることはありませんでしたので、私は私の上の4エントリの応答を検討していました6エントリーリクエスト。あなたの最初のリストは私のためにそれをしました。ありがとう。 – Jos

+3

最初に送信する前に正しい「registration_id」をフィルタリングするにはどうすればよいですか?それ以外の場合、最初のケースではサーバーは依然として3つの重複したメッセージを送信し、受信サーバーの応答が重複を消去した後にのみ発生します。 – iBog

関連する問題