cordova - 在后台默默处理推送通知

标签 cordova background push-notification phonegap-plugins

我正在创建一个 Phonegap 应用程序 - 目前用于 Android - 使用 Onesignal 处理推送通知。创建核心应用程序并不太困难。在应用程序的上下文中,用户实际上不需要查看通知。
我需要的是能够在应用程序 JavaScript 中处理消息有效负载。如果我愿意等待用户单击通知图标,此时 [notificationopenedcallback] 事件被触发,并且我可以自由地对有效负载做我喜欢的事情,那么这不是问题(请参阅 documentation )。
不错,但还不够。我需要做的是在通知到达时在 JavaScript 中操作有效负载 - 而不是在用户单击通知图标时的某个时间点。
我不清楚这是否可以完成 - 可能是因为没有办法为已经后台运行的应用程序执行 JS 代码。如果确实如此,我是否可以通过编写 native 应用程序以某种方式解决这个问题?

最佳答案

免责声明:我刚刚在 Cordova 中开发了一个插件,但已经很久没有看过推送通知了。

无论如何,快速的答案是在插件中实现推送通知。从JS调用插件并启动后台服务来监听和处理payload。

您可以通过编写一个包含从 BroadcastReceiver 派生的类的插件来做到这一点。您将在 onReceive 中处理传入的通知。

至于其他插件,我有限的经验是你应该继续使用cordova框架。这意味着应使用cordova 添加OneSignal。我基于我对支持 V4 插件的使用,所以 YMMV。

编辑:另一方面,再想一想,如果您使用的是 Google 通知等标准内容,则可能不需要 OneSignal。

我还没有做的一件事是在插件中生成一个带有服务和意图的 list 。我实际上是在附加到插件的 AAR 中完成的。所以我不确定 AAR list 是否会附加到主 list 。应该可以,但我没看过。如果是这种情况,您甚至不需要从 JS 调用 native 代码。广播接收器将收到通知。否则,您需要从 JS 调用 registerReceiver。

最后,我认为你是对的。如果应用程序在后台,它会停止并释放 WebView 等资源。这意味着 JS 将不会运行。

关于cordova - 在后台默默处理推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36793934/

相关文章:

当应用程序从空闲状态返回时,Android 服务不会重新启动

ios - Ionic 3.x : Push notification on iOS not working (works on Android? ) Ionic Native 插件推送

android - 使用 Cordova 在 Android 上打开 powerpoint 和 word 文档

css - Div 中的 HTML5 视频背景 - 需要帮助调整到窗口大小

cordova - 在在线网站中使用phonegap代码

Java swing - 频繁改变框架的颜色

ios - 关于推送通知

ios - didRegisterForRemoteNotificationsWithDeviceToken : null token

cordova - ionic 2 : Add URL Schemes automatically to the Whitelist for ios from config. xml

javascript - 如何在混合应用程序中移动这个有缺陷的原生裁剪框?