即使应用程序已死(刷掉),如何在收到邮件时启动活动?

时间:2017-06-23 07:39:44

标签: android firebase broadcastreceiver firebase-cloud-messaging

在我的应用程序中,我需要通过自定义呼叫类型屏幕通知用户,他必须回应一个重要的业务决策,这非常重要,以至于他记住了它可能导致的糟糕用户体验。

我使用FCM数据消息,但是当应用程序从6.0以下的设备中的当前应用列表中删除时,不会触发onRecieve方法。

现在我正在使用启动广播监听器的服务来收听收到的消息,应用程序在其前景/背景时按预期工作,但一旦刷掉,服务就会在应用程序被杀死时停止,但在6.0以上的设备中应用程序没有被刷卡杀死,这是我迄今为止的观察。

基本上我正在寻找的服务即使您的应用程序被刷掉也可以运行。我知道START_STICKY事情,但没有用。请帮帮我。

3 个答案:

答案 0 :(得分:1)

您应该按照文档中的描述实施FCM,每次数据消息到达时都应调用onMessageReceived()(即使应用程序被杀死或被删除)。

如果应用程序被刷掉,应用程序仍未收到该消息,则表示您的设备安装了非标准版Android

不幸的是,在这些设备上,这不是您的应用程序唯一会遇到的问题。

我的建议是与制造商联系并向他们解释他们的自定义打破了Android API。

更多信息: Push notifications using FCM not received when app is killed android

答案 1 :(得分:0)

创建始终保持运行的前台服务(除非强制关闭应用程序) https://stackoverflow.com/questions/6397754/android-implementing-startforeground-for-a-service

答案 2 :(得分:0)

确保您已按照文档中的说明在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>