Node.js xmpp客户端得到" BAD_REGISTRATION"错误作为消息响应

时间:2016-01-15 14:17:03

标签: javascript node.js google-cloud-messaging xmpp

这段代码可能有什么问题?我试图向我的移动设备发送推送通知。到目前为止没有运气..用PHP进行了一些测试并使用GCM HTTP协议来了解我的API和密码是否正确 - 一切都像魅力一样......这里是我的代码片段无法正常工作

var xmpp = require('node-xmpp-client');
var ltx = require('ltx');

var options = {
  jid: 'xxxxxxxxxxx@gcm.googleapis.com',
  password: 'AIzaxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
  port: 5235,
  host: 'gcm.googleapis.com',
  legacySSL: true,
  preferredSaslMechanism: true
};

var xmppClient = new xmpp.Client(options);
xmppClient.connection.socket.setTimeout(0);
xmppClient.connection.socket.setKeepAlive(true, 10000);
xmppClient.on('online', function() {
  var receiver = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxx-GnbkL2e5UlsS4utMw9rLTFrcsrhqxeH8xvzzzzzzzzzzzzzzzzzzzzzzz";
  /*var rawmsg = '<message id=""><gcm xmlns="google:mobile:data">{"to":"' + receiver + '", "message_id":"m-xxxx123", "data": {"hello":"world"}, "time_to_live":600, "delay_while_idle": true, "delivery_receipt_requested": true }</gcm></message>';
  var msg = ltx.parse(rawmsg);*/

  var msg = new xmpp.Element('message', {id: ''}).c('gcm', {xmlns: 'google:mobile:data'}).t(JSON.stringify({
    to: receiver,
    message_id: 'm-xxxx123',
    time_to_live: 600,
    delay_while_idle: true,
    delivery_receipt_requested: true
  }));
  xmppClient.send(msg);
  ............
  ............
}

这就是作为回应的“斯坦扎”事件。

........","message_id":"m-xxxx123","error":"BAD_REGISTRATION","error_description":""}' ],

1 个答案:

答案 0 :(得分:-1)

根据documentation,以下是导致错误的可能原因。

  

注册令牌无效

     

检查传递给服务器的注册令牌的格式。确保它与客户端应用程序从GCM注册时收到的注册令牌相匹配。不要截断或添加其他字符。

     

发件人不匹配

     

注册令牌与某组发件人绑定。当客户端应用程序注册GCM时,它必须指定允许哪些发件人发送消息。在向客户端应用程序发送消息时,您应该使用其中一个发件人ID。如果您切换到其他发件人,现有的注册令牌将无效。