在我的应用程序中,我需要通过自定义调用类型屏幕通知用户,他必须响应重要的业务决策,这非常重要,以至于他不介意它可能造成的不良用户体验。
我使用 FCM 数据消息,但是当应用程序从低于 6.0 的设备中的当前应用程序列表中滑出时,不会触发 onRecieve 方法。
现在我正在使用一个启动广播侦听器来收听收到的消息的服务,应用程序在其前台/后台时按预期工作,但是一旦它被刷出,服务就会停止,因为应用程序被杀死,但在 6.0 以上的设备中,应用程序不会被滑动杀死,这是我迄今为止的观察。
基本上,我正在寻找的服务即使您的应用程序被滑动也可以运行。我知道START_STICKY
的事情,这无济于事。请帮助我。
您应该按照文档中的说明实现 FCM,并且每次数据消息到达时都应调用onMessageReceived()
(即使应用程序被杀死或滑走(。
如果应用在滑动时未收到消息,则表示您的设备安装了非标准版本的Android。
不幸的是,在这些设备上,这不是您的应用程序将遇到的唯一问题。
我的建议是联系制造商并向他们解释他们的定制正在破坏Android API。
更多信息:当应用程序被杀死时,未收到使用 FCM 的推送通知
确保您已按照文档中的说明在 Android.manifest 中注册了您的服务。 这将仅在收到消息时启动您的服务。您不需要让服务持续运行。
https://firebase.google.com/docs/cloud-messaging/android/receive
<service
android:name=".MyFirebaseMessagingService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
创建始终运行的前台服务(除非应用被强制关闭(Android - 为服务实现 startForeground?