当前位置: 首页 > 知识库问答 >
问题:

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

秦奇
2023-03-14

Firebase push在某些设备上不起作用,当应用程序关闭时只有数据负载。请参阅以下线程:https://github.com/firebase/quickstart-android/issues/41

我知道当应用程序被swipe杀死时,一些OEM会杀死应用程序的所有服务,这些服务直接影响FirebbaseMessagingService并且由于这个onMessageReceived()方法从未被调用。我也尝试了高优先级的FCM,但不幸的是没有成功。以下是我面临问题的手机:一加、联想、华为。

目前,我正在测试一加5,当我改变电池设置为“不优化”,然后推送通知开始工作。

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

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

有什么建议我该怎么解决这个问题吗?

共有1个答案

牟焱
2023-03-14

FirebaseMessagingService即使在应用程序关闭/终止时也可以接收PushNotification

但也存在一些问题。应用程序的行为在开发和生产之间发生变化,并且由于设备提供商的原因。

您必须考虑的第一件事是,当应用程序正在开发时,如果您强制关闭应用程序(kill-process),firebasemessagingservice将停止被触发。但在生产中不会发生这种情况,因此如果您的APK已签名,请不要意识到这一点。链接到源

第二件事,是有一些Android手机提供商自己管理进程。我们可以看到一个例子,比如华为手机和他们的“受保护的应用程序”,它让用户决定是否要保护应用程序。只有著名的应用程序在安装时才会受到保护,比如WhatApp或Twitter...链接到源

此时,您的firebaseMessagingService应该被触发,但是还有其他与内存和系统(OS)管理的进程相关的问题。您的服务可能会被取消,因为它需要花费时间来处理PushNotification。您可以找到许多方法来处理这个问题,但最好的方法是Firebase JobDispatcher。链接到源

 类似资料:
  • 我想用Xamarin格式的C#创建一个基于文本的Android游戏。 在故事中,我想设置角色任务,这需要一些时间,例如“我去挖这个洞,完成后给你打电话。” 如何将通知设置为在设置的时间之后显示?例如,上述声明可能需要10分钟,然后用户收到继续游戏的通知? 我一周前才开始做C#,所以如果这是noobish,或者已经被问到了,我道歉。我到处都找过,但有几种类型的通知,当我试图理解它时,似乎我在读法语。

  • 如果应用程序关闭,我将如何使其发送通知?我正在制作一个从web服务器读取数据的应用程序,只有当该应用程序关闭且web服务器上的值更改时,我才需要向用户发送通知。

  • 我目前正在开发Android(Cordova)应用程序,我正在使用Oneignal推送通知。首先,如果我关闭应用程序,推送通知不会被传递,所以我不得不添加一个Cordova插件来保持我的应用程序在后台运行: 我在deviceready之后的代码: 谢了。

  • 当应用程序完全关闭时,如何以编程方式发送通知? 示例:用户关闭应用程序,也在Android Taskmanager中,然后等待。应用程序应在X秒后或应用程序检查更新时发送通知。 我试图使用这些代码示例,但是: 应用程序关闭时推送通知-活动太多/无法工作 我如何让我的应用程序在关闭时发送通知很多信息,但我不知道如何处理 当android应用程序关闭时,如何发送本地通知?-很多信息,但我不知道如何处理

  • 我的应用程序有推送通知(FCM)。当应用程序在前台运行时,我可以在onMessageReceived()函数中获取数据负载。当应用程序在后台运行或应用程序完全关闭时,不会调用onMessageReceived()函数。我的问题是,当app在后台或关闭时,是否可能获得数据有效载荷? 提前道谢!

  • null 我还试了一下: 关闭应用程序进程-&>;关闭设备-&>;打开设备电源-&>;发送通知。。。并且没有收到通知! 看起来firebase只有在设备启动了应用程序而不是100%关闭的情况下才能收到通知,我的意思是,只需用后退键关闭它而不是关闭应用程序进程。 这怎么可能呢?据推测,即使应用程序关闭,firebase也应该收到通知。 我正在Nexus5X和Android 8.0上进行测试,我使用的