(新)收到GCM消息,但如何解析?

use*_*150 14 android google-cloud-messaging

我正在使用"新"GCM,这是Google Play服务的一部分,它不会为Android和服务器使用jar.Android使用Google Play apk注册,接收甚至发送消息.在服务器端,我们需要与GCM通信的是对他们的服务器进行POST(如果不使用XMPP).我已全部设置:我的Android应用程序注册并等待来自GCM的消息.我的服务器可以与GCM通信,我可以将消息发送到我的Android应用程序.

问题:我正在使用一个常见的jar(Android和服务器)和POJO对象,我转换为JSON和从JSON转换.由于从我的服务器POST到GCM使用JSON并在我的Android使用中收到消息(至少我相信它),我认为这会让我的生活更轻松.但是当在Android中从GCM接收消息时,我不知道如何获取消息的有效负载并转换为我的对象.我可以看到那里的信息,但它不是我的对象(有一些信息GCM推进它).

我的问题是:有没有办法在Android端获得有效负载信息,就像我发送给GCM服务器一样?或者我应该在没有JSON的Android中解析收到的数据?

我发送的消息("数据"是有效负载)

{ "registration_ids":[ "APA91bFdV ..."], "collapse_key的":NULL, "delay_while_idle":假 "time_to_live":2419200, "数据":{ "类型":10 "targetVersion": - 1, "message":"test msg","url":"test url"}}

我在Android intent.getExtras().toString()中得到了什么

Bundle [{message = test msg,collapse_key = do_not_collapse,targetVersion = -1,from = 483833987130,type = 10,url = test url}]

我很感激你的帮助.谢谢!

Com*_*are 25

有没有办法在Android端获得有效负载信息,就像我发送给GCM服务器一样?

不要考虑"JSON",而应该考虑"键/值对".您的服务器以键/值对的形式发送数据.您的应用会将该数据作为关键字/值对接收到Intent.您知道您的密钥是什么,因此只需从与这些密钥绑定的附加内容中检索值(例如getStringExtra("message"),getStringExtra("url")).

或者我应该在没有JSON的Android中解析收到的数据?

收到的数据不是JSON.


FDI*_*DIM 10

你必须为json数据添加另一个级别,显然它们不会递归地解析json.发送:

{...., "data":{"payload":{"id":5,"a":5}}}
Run Code Online (Sandbox Code Playgroud)

然后在代码中:

String json = intent.getExtras().getString("payload");
// json = {"id":5,"a":5}
Run Code Online (Sandbox Code Playgroud)

这可以很容易地转换为POJO,对我来说这种方法更好,如果你已经有类(或者只是想使用对象而不是get ...("xyz")