node-gcm发送成功,但我不知道如何从客户端获取数据

所以我在服务器端使用node-gcm来发送
( https://github.com/ToothlessGear/node-gcm ):

var gcm = require('node-gcm'); var message = new gcm.Message({ collapseKey: 'demo', delayWhileIdle: true, timeToLive: 3, data: { type: 'pong', message: 'Hello Android!' } }); var sender = new gcm.Sender(myAPIKey); var registrationIds = [aDoc.registrationId]; sender.send(message, registrationIds, 4, function (err, result) { console.log(result); }); 

然后在客户端,在我的BroadcastReceiver中,我得到Logcat消息打印和接收通知,但extras(来自intent.getStringExtra(“data”))为空,我如何正确地得到它?我找不到在任何地方都可以做到这一点。

 @Override protected void onHandleIntent(Intent intent) { String action = intent.getAction(); Log.i(TAG, "GCM Received"); switch(action){ case GCM.ACTION_REGISTRATION: String registrationId = intent.getStringExtra(GCM.KEY_REG_ID); Log.i(TAG, "action received: registration: " + registrationId); ... break; case GCM.ACTION_RECEIVE: String extras = intent.getStringExtra("data"); Log.v(TAG, "" + extras); ... ... 

临时演员是空的

通过实验,我已经解决了我的问题。 node-gcm不是直接访问数据对象,而是直接将键值对添加到intent的extras中:

错误:

 // returns null String dataJson = intent.getStringExtra("data"); 

对:

 // returns "pong" String type = intent.getStringExtra("type");