仅在数据有效负载关闭应用时,Firebase推送在某些设备上无效。请参阅此主题:https://github.com/firebase/quickstart-android/issues/41
我知道当应用程序被刷卡杀死时,一些OEM会终止直接影响FirebbaseMessagingService的应用程序的所有服务,并且由于这个onMessageReceived()方法从未被调用过。我也尝试过高优先级的FCM,但遗憾的是没有成功。以下是我遇到问题的手机:OnePlus,联想,华为。
目前,我正在使用OnePlus 5进行测试,当我将电池设置更改为“不要优化"然后推送通知开始工作。
我杀了应用程序并运行dumpsys package MY-PACKAGE | grep stopped
命令,我发现应用程序没有停止。它显示stopped=false
。这意味着应用正在运行。
推送通知的概念是在应用关闭时通知用户,但目前我们无法做到。
有任何建议我该如何解决这个问题?
答案 0 :(得分:0)
FirebaseMessagingService
即使关闭/杀死应用也可以获得PushNotification
。
但是方式存在一些问题。应用程序的行为在开发和生产之间以及设备提供商之间发生变化。
您必须考虑的第一件事是,当应用程序处于开发阶段时,如果您强行关闭应用程序(kill-process),FirebaseMessagingService
将停止被触发。但这不会发生在制作中,所以如果你签了APK就不要注意这一点。 link to source
第二件事是,有些Android手机提供商通过他们自己管理流程。我们可以看到华为手机及其“受保护的应用程序”等示例,让用户决定是否要保护应用程序。只有着名的应用程序在安装时受到保护,如WhatApp或Twitter ... link to source
此时,应触发FirebaseMessagingService
,但是与系统(OS)管理的内存和进程相关的其他问题。您的Service
可以被取消,因为它花费了处理PushNotification
的时间。您可以找到许多方法来处理此问题,但最好的方法是Firebase JobDispatcher。 link to source