【问题标题】:FCM background/not running notification getIntent().getExtra() has mMap allways nullFCM 后台/未运行通知 getIntent().getExtra() 的 mMap 始终为空
【发布时间】:2018-03-07 12:55:52
【问题描述】:

我正在开发一个应用程序,当某些事件被触发时,我会从服务器获取一些推送通知。

当应用程序处于前台时,一切正常,在 onMessageReceived() 中,我获取 remoteMessage 并根据其映射键值处理它。

问题出在后台或应用程序未运行时...我仍然在设备屏幕中收到通知,当我点击它时,活动开始。

我在活动开始后做如下验证:

 Bundle mBundle = getIntent().getExtras();
    if(mBundle != null)
    {
    //do stuff
    }

但我总是在 bundle 对象中得到 mMap = null,这意味着我无法正确处理推送通知。

可以对此做些什么吗?

【问题讨论】:

  • 你有没有想过这个问题?我遇到了同样的问题,尽管在我的情况下,当应用程序通过通知点击启动时,mMap 曾经是非空的。然后,突然间,没有更改任何代码,mMap 为空。

标签: android push-notification background bundle


【解决方案1】:

Notification Message有两种类型

1.通知消息

可以在应用程序运行时获取通知消息,但如果应用程序没有运行(被杀死),那么它将无法工作。它只显示通知已到达。

例子,

{
  "message":{
    "token":"bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification":{
      "title":"Portugal vs. Denmark",
      "body":"great match!"
    }
  }
}

2。数据消息(也称为静默通知)

即使应用程序未运行,Data Messagegs 也能正常工作。

例子,

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

【讨论】:

  • 如何确认应用在后台时发送的是数据消息?
  • 我对这个答案投了反对票,因为它根本没有解决 OP 的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-20
  • 2022-08-15
  • 2017-11-28
  • 2021-09-11
  • 1970-01-01
  • 1970-01-01
  • 2017-10-27
相关资源
最近更新 更多