应用程序在后台时未调用 Firebase onMessageReceived

新手上路,请多包涵

我正在使用 Firebase 并测试在应用程序处于后台时从我的服务器向我的应用程序发送通知。通知发送成功,它甚至出现在设备的通知中心,但是当通知出现或者即使我点击它,我的 FCMessagingService 中的 onMessageReceived 方法也永远不会被调用。

当我在我的应用程序处于前台时对此进行测试时,调用了 onMessageReceived 方法并且一切正常。当应用程序在后台运行时会出现问题。

这是预期的行为,还是有办法解决这个问题?

这是我的 FBMessagingService:

 import android.util.Log;

import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;

public class FBMessagingService extends FirebaseMessagingService {

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        Log.i("PVL", "MESSAGE RECEIVED!!");
        if (remoteMessage.getNotification().getBody() != null) {
            Log.i("PVL", "RECEIVED MESSAGE: " + remoteMessage.getNotification().getBody());
        } else {
            Log.i("PVL", "RECEIVED MESSAGE: " + remoteMessage.getData().get("message"));
        }
    }
}

原文由 Cyogenos 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 931
2 个回答

这是按预期工作的,只有当您的应用程序处于前台时,通知消息才会传递到您的 onMessageReceived 回调。如果您的应用程序在后台或已关闭,则通知中心会显示一条通知消息,并且 该消息中的任何数据都会传递给由于用户点击通知而启动的意图

您可以在 JSON 中指定 click_action 以指示用户点击通知时应启动的意图。如果未指定 click_action,则使用主要活动。

当意图启动时,您可以使用

getIntent().getExtras();

检索一个集合,该集合将包括与通知消息一起发送的任何数据。

有关通知消息的更多信息,请参阅 文档

原文由 Arthur Thompson 发布,翻译遵循 CC BY-SA 4.0 许可协议

这是预期的行为,您需要在 firebase 通知数据集中设置 click_action 以便能够从后台接收数据。

在此处查看更新的答案: https ://stackoverflow.com/a/73724040/7904082

原文由 Akinyemi Jamiu 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题