应用程序在后台时未调用 Firebase onMessageReceived [英] Firebase onMessageReceived not called when app in background

查看:33
本文介绍了应用程序在后台时未调用 Firebase onMessageReceived的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I'm working with Firebase and testing sending notifications to my app from my server while the app is in the background. The notification is sent successfully, it even appears on the notification centre of the device, but when the notification appears or even if I click on it, the onMessageReceived method inside my FCMessagingService is never called.

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

When I tested this while my app was in the foreground, the onMessageReceived method was called and everything worked fine. The problem occurs when the app is running in the background.

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

Is this intended behaviour, or is there a way I can fix this?

这是我的 FBMessagingService:

Here is my 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"));
        }
    }
}

推荐答案

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

This is working as intended, notification messages are delivered to your onMessageReceived callback only when your app is in the foreground. If your app is in the background or closed then a notification message is shown in the notification center, and any data from that message is passed to the intent that is launched as a result of the user tapping on the notification.

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

You can specify a click_action to indicate the intent that should be launched when the notification is tapped by the user. The main activity is used if no click_action is specified.

启动意图时,您可以使用

When the intent is launched you can use the

getIntent().getExtras();

检索包含随通知消息一起发送的任何数据的 Set.

to retrieve a Set that would include any data sent along with the notification message.

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

For more on notification message see docs.

这篇关于应用程序在后台时未调用 Firebase onMessageReceived的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆