无法正确发送GCM推送消息

时间:2014-12-15 13:23:27

标签: google-cloud-messaging

因此,如果我使用此测试链接

,我的GCM推送消息将起作用

http://www.androidbegin.com/tutorial/gcm.html

这是回复

{ "multicast_id":7724943165862866717,
  "success":1,
  "failure":0,
  "canonical_ids":0,
  "results":[{"message_id":"0:1418649384921891% 7fd2b314f9fd7ecd"}]}

但是,如果我使用toothlessgear / node-gcm lib使用节点推送服务来推送我自己的服务 https://github.com/ToothlessGear/node-gcm我在服务器上收到成功消息,但没有消息到达客户端

{ multicast_id: 5130374164465991000,
  success: 1,
  failure: 0,
  canonical_ids: 0,
  results: [ { message_id: '0:1418649238305331%7fd2b3145bca2e79' } ] }

我也使用pushwoosh尝试相同的消息,推送woosh也不起作用。为什么我在服务器上获得成功消息,但在后两个服务上没有在客户端上收到推送。是否需要进行某种ip配置或某种证书?我使用了相同的google api服务器密钥,该密钥对所有这3项服务中的所有ips开放。

为什么响应在后者上显示成功但在客户端没有收到消息?

节点服务服务器端代码

var gcm = require('node-gcm');

// create a message with default values
var message = new gcm.Message();

// or with object values
var message = new gcm.Message({
    collapseKey: 'demo',
    delayWhileIdle: true,
    timeToLive: 3,
    data: {
        key1: 'message1',
        key2: 'message2'
    }
});

var sender = new gcm.Sender('insert Google Server API Key here');
var registrationIds = ['regId1'];

/**
 * Params: message-literal, registrationIds-array, No. of retries, callback-function
 **/
sender.send(message, registrationIds, 4, function (err, result) {
    console.log(result);
});

1 个答案:

答案 0 :(得分:1)

所以推送正确发送,我的问题是客户端上的cordova插件,需要设置“消息”或“标题”的android负载。巧合的样本只是设置了消息属性,这就是它工作的原因。

更新代码以将以下内容添加到数据

数据:{message:'test'}

正常工作