繁体   English   中英

当应用程序处于前台时,phonegap-plugin-push不触发新通知的回调函数

[英]phonegap-plugin-push not triggering callback function for new notification when app is in foreground

我正在使用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并看到已收到通知,但没有看到日志显示回调函数已被触发(很显然,我期望看到的结果没有发生)。 我也没有看到错误事件触发的回调函数,因此它可能并没有真正失败。

我想念什么吗? 我在网上找不到有关此问题的任何内容,也无法真正阅读Java来了解该插件的行为方式...

  • 编辑:我只是想出了点什么。 即使我从JavaScript中删除了代码-PushNotification init和on(“ notificataion”)函数,也会出现指示推送通知到达的日志。 因此,对于自己需要在何处放置init和event handler函数,我感到有些困惑。

我的应用程序由index.html(应用程序启动时将加载的页面)和许多其他html文件(每个文件充当应用程序的单独页面)组成。我是否应该在每个页面上放置事件处理程序?我做了什么

谢谢,优西

在调用PushNotification.init之前,您可能需要等待deviceready事件。 这可能比使用setTimeout更可靠(更快速)。

我可能没有收到您的问题,但是如果您想在应用程序处于前台时显示通知。forceshow参数的默认值为false,您说的没错

“ android”:{“ senderID”:“ *********”,“ forceShow”:“ true”},

我最终注意到,当我第一次加载页面时,有时有时未定义PushNotification对象,但是如果我等待足够的时间(100毫秒),则会对其进行定义。 我最终要做的是每100毫秒运行一次间隔,检查是否已定义PushNotification对象,如果已定义,则运行我的init + event侦听器代码并清除间隔。 在相当长的一段时间内,这似乎运作良好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM