这段代码可能有什么问题?我试图向我的移动设备发送推送通知。到目前为止没有运气..用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":""}' ],
答案 0 :(得分:-1)
根据documentation,以下是导致错误的可能原因。
注册令牌无效
检查传递给服务器的注册令牌的格式。确保它与客户端应用程序从GCM注册时收到的注册令牌相匹配。不要截断或添加其他字符。
发件人不匹配
注册令牌与某组发件人绑定。当客户端应用程序注册GCM时,它必须指定允许哪些发件人发送消息。在向客户端应用程序发送消息时,您应该使用其中一个发件人ID。如果您切换到其他发件人,现有的注册令牌将无效。