【问题标题】:FirebaseMessagingService onMessageReceived getData returns blank arrayFirebaseMessagingService onMessageReceived getData 返回空白数组
【发布时间】:2017-10-16 18:32:25
【问题描述】:

我已经实现了 MyFirebaseMessagingService,我正在尝试获取推送通知中传递的数据。

在 onMessageReceived 中,我可以在调试器中看到数据在这里:

我需要的确切数据在“value[2]”中。

名为“value[2]”的实体对我来说很奇怪,那么关键是什么?是2吗?

remoteMessage.getData().get(2)

返回空值...

偶数

remoteMessage.getData()

返回一个空数组:

System.out.println("DATA DUMP: " + remoteMessage.getData());

I/System.out:数据转储:{}

为什么我可以在调试器中看到它是空的?如何访问这些数据?

【问题讨论】:

  • getData() 返回的数据载荷是一个Map<String,String>。地图中的条目是使用它们的字符串键获得的,例如getData().get("uid")。可以贴出发送时在消息中设置数据字段的代码吗?
  • 我知道这是一张地图,但无论我尝试从哪种方式打印,它似乎都是空白的,但在调试器中我可以看到数据。我不直接在消息中设置数据字段。我正在使用以下代码:stackoverflow.com/questions/37435750/… 我刚刚在 NotifyData 类中添加了一个字段,并且此数据存在于调试器中的“值 [2]”中。但是 getData() 什么也没给我。我被卡住了。

标签: java android firebase firebase-cloud-messaging


【解决方案1】:

想通了。

这都是因为数据发送错误。它必须有一个名称“数据”,否则它不会在 remoteMessage.getData() 中返回。 getData() 只会寻找那个,但调试器可以看到更多。因此,如果您发送了数据,但在其他字段名称中应用程序会获取它,但无法访问它,因为唯一的方法是 getData 并且它需要名为“data”的字段。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-01
    • 2020-02-06
    • 2019-05-15
    • 1970-01-01
    • 1970-01-01
    • 2017-12-14
    • 2020-04-17
    • 1970-01-01
    相关资源
    最近更新 更多