我希望能够在 Android 上使用 Titanium 和 Arrow Push 发送推送通知。
我已按照此处的说明进行操作:
我的简单代码如下所示:
var CloudPush = require('ti.cloudpush');
var deviceToken = null;
// Works fine
CloudPush.retrieveDeviceToken({
success: function () {
deviceToken = e.deviceToken;
alert('deviceToken: ' + deviceToken);
subscribeToChannel();
},
error: function () {
alert('Failed to register for push notifications! ' + e.error);
}
});
// Never runs!!!
CloudPush.addEventListener('callback', function (evt) {
Ti.API.info('New notification!');
alert("Notification received: " + evt.payload);
});
// Works fine
function subscribeToChannel () {
Cloud.PushNotifications.subscribeToken({
device_token: deviceToken,
channel: 'general',
type: Ti.Platform.name
}, function (e) {
if (e.success) {
alert('Subscribed');
} else {
alert('Error:\n' + ((e.error && e.message) || JSON.stringify(e)));
}
});
}
上面的大部分代码都与文档类似。代码的订阅方面似乎工作得很好,因为用户的设备也出现在 Appcelerator 仪表板的设备部分。
但是,在从 Appcelerator 仪表板发送通知时,我的 Android 设备旁边会出现“失败”一词。
突出显示“?”时的完整错误消息 图标如下:
异常类型:GCM;错误代码:3103;错误消息:RegistrationId(s) 为空或为空;捕获的异常:参数不能为空
我在http://docs.appcelerator.com/arrowdb/latest/#!/guide/troubleshooting上查看了这个错误,它说的是:
GCM 客户端提供了一个 null 或空的注册 ID。如果您使用的是 Modules.CloudPush 模块,则此错误并不常见。
这没有帮助。
我究竟做错了什么?这是加速器方面的错误。