我正在使用Phonegap(cli v5.3.6)为Android编写移动应用程序,并且我使用phonegap-plugin-push v1.3向GCM注册设备并在到达时处理通知在设备上。
// define the push settings
var push = PushNotification.init({
"android": {
"senderID": "*********"
},
"ios": {},
"windows": {}
});
push.on("notification", function(data) {
console.log("notification received while in app");
console.log(JSON.stringify(data));
addMessageToLocalDB(data, false);
});
push.on("error", function(e) {
console.log(JSON.stringify(e));
});
当应用关闭或在后台运行时效果很好。当应用程序在前台时,我的问题出现了。我正在查看logcat并看到收到了通知,但是我没有看到我的日志记录显示回调函数已被触发(显然,我期望看到的结果是&n& #39; t发生)。我也没有看到错误事件触发的回调函数,所以它可能并没有真正失败。
我错过了什么吗?我无法在网上找到关于这个问题的任何内容,我无法真正阅读java以了解该插件应该如何表现......
我的应用程序包含index.html(应用程序启动时加载的页面)和许多其他html文件(每个文件都充当应用程序的单独页面。不应该把事件处理程序放在上面每个页面?我做了什么尝试...
谢谢, Yosi。
答案 0 :(得分:1)
在致电deviceready
之前,您可能需要等待PushNotification.init
事件。这可能比使用setTimeout
更可靠(也更快)。
答案 1 :(得分:0)
我可能不会得到您的查询,但是如果您想在应用程序处于前台时显示通知.forceshow参数的默认值为false,您是对的
" android":{ " senderID":" *********", " forceShow" :" true" },
答案 2 :(得分:0)
我最终注意到,当我第一次加载页面时,PushNotification对象有时是未定义的,但如果我等待足够的时间(100ms),则会定义它。 我最终做的是每100ms运行一次的间隔,检查是否定义了PushNotification对象,如果是,则运行我的init +事件监听器代码并清除间隔。这似乎在很长一段时间内都运作良好。