【问题标题】:phonegap-plugin-push not triggering callback function for new notification when app is in foreground当应用程序处于前台时,phonegap-plugin-push 不会触发新通知的回调函数
【发布时间】:2015-10-01 12:40:15
【问题描述】:

我正在使用 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 和事件处理函数放在哪里感到有些困惑。

我的应用程序包含 index.html(这是应用程序启动时加载的页面)和许多其他 html 文件(每个都充当应用程序的单独页面。我不应该将事件处理程序放在每个人身上吗?页面?那是我尝试过的...

谢谢, 约西。

【问题讨论】:

    标签: javascript android cordova phonegap-plugins phonegap-pushplugin


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      “机器人”:{ “发件人ID”: ”*********”, “力秀”:“真” },

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 设置每隔 100 毫秒运行一次的时间间隔根本不是一个好主意,而且对应用程序来说是不必要的开销。您应该先等待 deviceready 事件被触发,然后初始化 Push Notification 对象。并将其注册为通知和错误回调。任何通过应用程序注册的设备都会收到任意次数的通知,除非应用程序被卸载。其实不需要时不时的注册设备,注册一次推送通知就够了!
        猜你喜欢
        • 2018-02-20
        • 1970-01-01
        • 2020-07-29
        • 2021-06-30
        • 2019-08-10
        • 2019-07-02
        • 1970-01-01
        • 2021-12-13
        • 1970-01-01
        相关资源
        最近更新 更多