firebase push仅使用数据有效载荷关闭应用时在某些设备上不起作用。请参阅此线程:https://github.com/firebase/quickstart-android/issues/41
我知道何时通过滑动杀死应用程序,然后有些OEM杀死了该应用程序的所有服务,该应用程序直接影响FireBbaseMessagingService,并且由于这种onMessageReceived((方法从未调用。我还尝试过高优先级FCM,但可悲的是没有成功。这是我面对问题的手机:一plus,联想,华为。
目前,当我将电池设置更改为"不优化"时,我正在使用OnePlus 5进行测试,然后推动通知开始工作。
我杀死了该应用程序并运行dumpsys package MY-PACKAGE | grep stopped
命令,发现该应用程序没有停止。它显示stopped=false
。这意味着应用程序正在运行。
推送通知的概念是在关闭应用程序时通知用户,但目前我们无法执行。
有什么建议如何修复?
FirebaseMessagingService
即使关闭/杀死应用也可以接收PushNotification
。
但是有一些问题。应用程序的行为在开发和生产之间发生变化,并且由于设备提供商。
您必须考虑的第一件事是,当应用程序正在开发时,如果您强制关闭应用程序(杀戮过程(,则FirebaseMessagingService
停止触发。但这并非在生产中发生,因此如果您的APK签名,请不要意识到这一点。链接到源
第二件事是,有一些由他们自我管理流程的Android电话提供商。我们可以看到像华为手机及其"受保护的应用程序"这样的示例,该示例使用户决定是否要保护该应用程序。只有著名的应用程序在安装中受到保护,例如Whatapp或Twitter ...链接
在这一点上,应触发您的FirebaseMessagingService
,但是与系统(OS(管理的内存和过程有关的其他问题。您的Service
可以取消,因为它花了时间来处理PushNotification
。您可以找到许多解决此问题的方法,但最好的方法是Firebase JobDispatcher。链接到源