android - 如何在应用程序为后台 FCM 时检索通知消息 intent.getExtras()

标签 android firebase firebase-cloud-messaging firebase-notifications

我正在使用 FCM 进行简单通知

当应用程序处于前台时,一切正常。我在 onMessageReceived 方法中收到通知和数据消息。

但是当应用程序在后台运行时,我会在系统托盘中收到通知。当我点击控件时,它会转到主要 Activity 。当我解析 intent.getExtras(); 时,我只得到这个关键数据 - google.sent_time, from, google .message_id, collapse_key.

如何从intent.getExtras()获取系统托盘中可见的通知消息标题和Message?

我正在使用 FCM 控制台发送通知我没有专门的服务器来执行此操作。

接收消息代码:

final Bundle extras = intent.getExtras(); 
final Set<String> keySet = extras.keySet(); 
final Iterator<String> iterator = keySet.iterator(); 
while (iterator.hasNext()) {     
    final String key = iterator.next(); 
    final Object o = extras.get(key); 
    System.out.println(key + ":" + o); 
} 

最佳答案

Handling Messages for Android FCM docs 中所示,如果你发送的payload既有通知又有数据,会分开处理。通知部分将由 Notification Tray 处理,而数据部分将在 intent 的 extras 中。

据我所知,当应用程序处于后台时(始终由通知托盘处理),无法获取通知负载。但是,您可以改为将自定义键值对添加到您的数据负载中,如下所示:

{
"data": {
      "notification_title": "title here",
      "notification_message": "message here"
     }
}

当然,您必须确保 notification_titlenotification_message 的数据值与您在通知负载中设置的值相同。然后像往常一样从 Intent extras 中检索它。

关于android - 如何在应用程序为后台 FCM 时检索通知消息 intent.getExtras(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41458359/

相关文章:

android - 在一个 APK 文件中切换不同的 firebase 项目(运行时)

firebase - 如何使用 Firebase 云消息发送设备到设备消息?

android - 使用 LinearLayout 将按钮底部对齐

android - 应用程序是否需要对在 FCM 中使用和不使用 delivery_receipt_requested 收到的消息采取不同的操作?

android - 使用 HttpResponse 时出现异常 response = client.execute(request);

ios - Firebase iOS 崩溃报告可读性问题

swift - 使用 Swift 的 GeoFire

java - Firebase 在类上找不到要序列化的属性

Android 单元测试过去工作正常,现在抛出 NullPointerException

android - 如何在 Facebook 故事中投票?