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

标签 android firebase firebase-cloud-messaging

我正在使用 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"));
        }
    }
}

最佳答案

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

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

Intent 启动后,您可以使用

getIntent().getExtras();

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

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

关于android - 应用程序在后台时未调用 Firebase onMessageReceived,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37358462/

相关文章:

android - 如何使用 CursorAdapter 将 Filter 设置为 ListView?

ios - Firebase + swift : Unable to delete rows in tableView

android - 单击 Fcm 通知时打开深层链接 url

internet-explorer - 如何在 Internet Explorer 中接收 GCM/FCM 通知?

java - firebase android开发中通过循环从子节点获取特定数据

android - 安卓奥利奥版收不到FCM通知信息?

android - ajax 请求没有从 phonegap kitkat 中的服务器获取 SET-COOKIE?

java - 是否可以更改 Firebase 的短信验证消息?

android - ViewPager 不显示任何内容 - android

angular - 使用 Firebase sdk3 和 Angularfire2 进行身份验证电子邮件/密码