java - Android 推送通知 Firebase

标签 java android firebase firebase-cloud-messaging

仅当应用打开时,才会处理来自 Firebase 数据的 Android 推送通知,并且如果应用处于后台或未运行,Firebase 会在推送时从通知标记中发出包含标题和正文的通知。当应用程序处于后台或未运行时,如何处理数据标签。我尝试过以下代码:

public static String TAG = MyFirebaseMessagingService.class.getSimpleName();
 @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
            super.onMessageReceived(remoteMessage);

     Log.e(TAG,"Test_Data:"+remoteMessage.getData().toString());

    }

但它仅在应用程序打开时才起作用,并且我无法仅处理基本上由 Firebase 本身处理的通知标记的数据!

最佳答案

要以相同的方式处理前台、后台和终止状态的数据,您必须发送数据消息而不是通知消息。数据消息始终在 onMessageReceived() 中接收。您可以通过在 json 中仅包含数据标记来实现此目的。

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "data":{
      "Nick" : "Mario",
      "body" : "great match!",
      "Room" : "PortugalVSDenmark"
    }
  }
}

如果您在此 json 中包含通知对象,则它会被视为通知消息,并且仅在点击时才会传递数据部分

关于java - Android 推送通知 Firebase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48419128/

相关文章:

java - 无法使用自定义 sqlite 绑定(bind)创建数据库

java - 外域类没有id域

javascript - 在用户注销后从 Cloud Firestore 中清除用户数据

java - Firebase 数据库身份验证注册

java - 我可以进一步改善此正则表达式的性能吗

java - 如何消除这个具体例子中的开关

java - 如何在 android 中使用 Firebase 数据库中的图像填充 ListView ?

java - 是否可以使用 Redisson lib 中的 ScoredSortedSet 在具有大量写入的环境中获取实际项目排名?

android - 对于 Android GUI 自动化测试,AndroidViewClient/Culebra 相对于 Espresso 有哪些缺点?

ios - Cocoapods - 仅在使用 FirebaseCore 时安装 FirebaseAnalytics