在后台无声处理推送通知

问题描述:

我正在创建Phonegap应用程序 - 目前为Android - 使用Onesignal处理推送通知的过程。创建核心应用程序并不困难。在应用程序的上下文中,用户实际上不需要查看通知。在后台无声处理推送通知

我所要求的是能够处理应用程序JavaScript中的消息负载。如果我愿意等待用户单击通知图标,那么触发[notificationopenedcallback]事件并且我可以随意按照我喜欢的有效负载进行操作,这不是问题。 1

不错,但还不够。我需要做的是在通知到达时用JavaScript处理有效载荷 - 而不是将来用户单击通知图标时的某个时刻。

我不清楚这可以完成 - 也许是因为没有办法为已经背景的应用程序执行JS代码。如果确实如此,我可以通过编写一个本地应用程序来绕过这个问题吗?

我非常感谢任何帮助。

+0

你有没有设法达到这个底部?我处于完全相同的情况:我需要在Ionic应用程序中处理静默推送通知,暂时唤醒应用程序并执行一些代码。任何新闻? – fikkatra

+0

正如在接受的答案中已经提出的那样 - 您需要编写自己的插件,而不是将各种各样的readymade插件放在一起。一旦你开始写你自己的插件,你可以访问整个Android API,并且可以做几乎任何你喜欢的事情 – DroidOS

+0

以及如何发布插件? :-) – fikkatra

我想你必须编写一个原生的Android应用程序,如果你想在他们到达时可靠地处理推送通知。

我一直在使用phonegap-plugin-push处理推在我的科尔多瓦应用通知和目前它没有醒下对新接收到的推送通知所有情况下的应用。例如,请参阅此问题#806

对于我的目的(非关键),我依靠用户单击通知以在任何情况下唤醒应用程序。phonegap-plugin-push的好处在于,它支持iOS,Android和Windows,以备将来支持其他平台。

声明:我刚刚在科尔多瓦开发了一个插件,但没有看过年龄推送通知。

在任何情况下,快速回答是在插件中实现推送通知。从JS调用插件并启动后台服务来侦听和处理有效负载。

您将通过编写一个包含从BroadcastReceiver中取消的类的插件来实现此目的。你会在onReceive中处理传入的通知。

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

编辑:在另一方面和第二个想法,如果你使用像谷歌通知什么标准,你可能不需要OneSignal。

我还没有做的一件事就是在插件中生成一个带Service和manifest的清单。我实际上是在附加到插件的AAR中完成的。所以我不确定AAR清单是否会被附加到主清单上。它可能应该,但我没有看过这个。如果是这种情况,你甚至不需要从JS调用本地代码。广播接收机将收到通知。否则,你需要从JS调用registerReceiver。

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

+0

从插件_实现推送通知。你能解释一下吗?你的意思是直接从应用程序JS注册Push通知(在我的情况下通过OneSignal),而不是通过自定义的Phonegap插件进行注册? – DroidOS

+0

我的意思是写一个额外的自定义插件,并相应地更新了答案。 –