应用程序关闭/终止时Android中的Firebase推送通知问题

时间:2018-02-06 11:50:55

标签: android firebase android-service firebase-cloud-messaging

仅在数据有效负载关闭应用时,Firebase推送在某些设备上无效。请参阅此主题:https://github.com/firebase/quickstart-android/issues/41

我知道当应用程序被刷卡杀死时,一些OEM会终止直接影响FirebbaseMessagingService的应用程序的所有服务,并且由于这个onMessageReceived()方法从未被调用过。我也尝试过高优先级的FCM,但遗憾的是没有成功。以下是我遇到问题的手机:OnePlus,联想,华为。

目前,我正在使用OnePlus 5进行测试,当我将电池设置更改为“不要优化"然后推送通知开始工作。

我杀了应用程序并运行dumpsys package MY-PACKAGE | grep stopped命令,我发现应用程序没有停止。它显示stopped=false。这意味着应用正在运行。

推送通知的概念是在应用关闭时通知用户,但目前我们无法做到。

有任何建议我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

FirebaseMessagingService即使关闭/杀死应用也可以获得PushNotification

但是方式存在一些问题。应用程序的行为在开发和生产之间以及设备提供商之间发生变化。

您必须考虑的第一件事是,当应用程序处于开发阶段时,如果您强行关闭应用程序(kill-process),FirebaseMessagingService将停止被触发。但这不会发生在制作中,所以如果你签了APK就不要注意这一点。 link to source

第二件事是,有些Android手机提供商通过他们自己管理流程。我们可以看到华为手机及其“受保护的应用程序”等示例,让用户决定是否要保护应用程序。只有着名的应用程序在安装时受到保护,如WhatApp或Twitter ... link to source

此时,应触发FirebaseMessagingService,但是与系统(OS)管理的内存和进程相关的其他问题。您的Service可以被取消,因为它花费了处理PushNotification的时间。您可以找到许多方法来处理此问题,但最好的方法是Firebase JobDispatcherlink to source