14

Androidとサーバーの両方でjarを使用しない、Google Play Servicesの一部である「新しい」GCMを使用しています。Android は Google Play apk を使用して、メッセージの登録、受信、さらには送信を行います。サーバー側では、GCM と通信するために必要なのは、サーバーに対して POST を実行することだけです (XMPP を使用していない場合)。すべての設定が完了しました。私の Android アプリは、GCM からのメッセージを登録して待機します。サーバーは GCM と通信でき、Android アプリにメッセージを配信できます。

問題: JSON との間で変換する POJO オブジェクトを含む一般的な jar (Android とサーバー) を使用しています。私のサーバーから GCM への POST は JSON を使用し、私の Android でも受信メッセージを使用しているので (少なくとも私はそう信じています)、私の生活が楽になると思いました。しかし、Android で GCM からメッセージを受信すると、メッセージのペイロードを取得してオブジェクトに変換する方法がわかりません。そこに情報が表示されますが、それは私のオブジェクトではありません (GCM がプッシュする情報がいくつかあります)。

私の質問は次のとおりです:Androidの終わりに、GCMサーバーに送信した方法でペイロード情報を取得する方法はありますか? または、JSON を使用せずに Android で受信したデータを解析する必要がありますか?

送信したメッセージ (「データ」はペイロード)

{"registration_ids":["APA91bFdV..."],"collapse_key":null,"delay_while_idle":false,"time_to_live":2419200,"data":{"type":10,"targetVersion":-1, "メッセージ":"テスト メッセージ","URL":"テスト URL"}}

私がAndroidで得たもの インテント.getExtras().toString()

バンドル[{message=test msg, collapse_key=do_not_collapse, targetVersion=-1, from=483833987130, type=10, url=test url}]

よろしくお願いします。ありがとう!

4

3 に答える 3

25

Android側で、GCMサーバーに送信した方法でペイロード情報を取得する方法はありますか?

「JSON」を考えるのではなく、「キーと値のペア」を考えてください。サーバーはキーと値のペアでデータを送信します。アプリは、そのデータを のエクストラでキーと値のペアとして受け取りますIntent。キーが何であるかはわかっているので、それらのキーに関連付けられているエクストラから値を取得するだけです (例: getStringExtra("message")getStringExtra("url"))。

または、JSON を使用せずに Android で受信したデータを解析する必要がありますか?

受信したデータは JSON ではありません。

于 2013-07-20T22:24:29.887 に答える