【问题标题】:Firebase RemoteMessage has filled Bundle but getData() is emptyFirebase RemoteMessage 已填充 Bundle 但 getData() 为空
【发布时间】:2017-08-28 10:56:31
【问题描述】:

我的 firbase RemoteMessage 有一个带有 12 个键值对的 mBundle,根据调试器,这些字段已填充

但是当我说:remoteMessage.getData(); 时,生成的 ArrayMap Map<String, String> 的大小为 0,因此没有元素。

如何访问 remoteMessage 的 Map?

【问题讨论】:

  • 我遇到了完全相同的问题。你解决了吗?
  • 没关系,@sampo02 回答对我有帮助

标签: android firebase firebase-cloud-messaging


【解决方案1】:

我知道这可能会迟到,但您可以从 RemoteMessage 中的通知对象获取数据

String title = remoteMessage.getNotification().getTitle();
String body = remoteMessage.getNotification().getBody();

希望对你有帮助

【讨论】:

  • remoteMessage.getNotification().getBody();抛出 NullPointerException。 getNotification 为空。
【解决方案2】:

我也遇到了同样的问题。
终于解决了这个问题。
就我而言,服务器端发送 FCM 有效负载问题。
像这样。

options = {
  priority: 'high',
  notification: {
    title: "title",
    body: "message",
    url: "some_url",
    image_url: "some_image_url"
  }

我更新如下,

options = {
  priority: 'high',
  notification: {
    title: "title",
    body: "message",
  },
  data: {
    url: "some_url",
    image_url: "some_image_url"
  }

之后,我可以通过remoteMessage.getData() 获取有效载荷值。

【讨论】:

  • 同样,不适合我!因为 bundle 在 remoteMessage.getData() 中没有。数据大小 == 0
  • 我已经实现了相同的代码,但 remoteMessage.getData().size() 仍然返回 0。
  • 我相信如果应用程序不在前台 Android 它需要特殊覆盖 sendNotification(),我们必须手动构建通知以在应用程序处于前台时显示为弹出窗口,在本例中为“RemoteMessage. getData.get("title") 仅适用,如上所述,FCM 有效负载应包含两个对象 - 通知和数据 如果应用程序在后台 Android 需要“RemoteMessage.getNotification()”
【解决方案3】:

调试器最初显示data字段为空,但调用getData()返回结果,然后调试器显示正确的映射。

【讨论】:

    猜你喜欢
    • 2020-10-11
    • 1970-01-01
    • 2019-07-31
    • 1970-01-01
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    • 2018-05-16
    • 1970-01-01
    相关资源
    最近更新 更多