当后台firebase通知中的app有带有效负载的通知时,是否有远程消息方法调用

时间:2017-07-07 12:51:14

标签: android firebase firebase-notifications

我会尝试在应用程序背景下获取数据,如此格式

{
    "to" : "bk3RNwTe3H0:CI2k_HHwgIpoDKCIZvvDMExUdFQ3P1...",
    "notification" : {
      "body" : "great match!",
      "title" : "Portugal vs. Denmark",
      "icon" : "myicon"
    },
    "data" : {
     "Nick" : "Mario",
     "body" : "great match!",
     "Room" : "PortugalVSDenmark"
   }
}

所以数据是通过onMessageReceived(RemoteMessage消息)方法传递的,或者我不知道任何人都可以帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

要让应用在后台时可以点击通知,您需要在通知有效负载中使用click_action属性。

请查看Firebase文档的section

此外,当您定义click_action属性时,您还需要在要启动的活动的<action>中使用相应的<intent-filter>属性。

video以非常详细的方式解释了它。

但请注意,如果您要从Firebase控制台发送通知,则无法设置click__action属性。只有从自己的管理服务器或使用Firebase云功能发送通知时,才能执行此操作。

最后,在启动的活动中,您可以使用数据属性设置其他Data(也显示在我上面链接的同一文档中)。当您通过单击通知启动应用程序时,您可以使用getIntent()获取通知数据。查看this answer了解有关如何执行此操作的详细信息。

例如,如果您的通知有效内容具有以下结构,

payload = {
  notification: {
    title: `You ordered a new product`,
    click_action : 'HANDLE_NOTIFICATION',

  },
  data : {
        product_id : 'ABC98292',
        type : `Clothes`,
        product_name : 'Cotton spring shirt'
    }
};

然后,将过滤器放在单击通知时要打开的活动的标记中。一个例子如下: -

<intent-filter>
    <action android:name="HANDLE_NOTIFICATION" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
</intent-filter>

然后,您可以使用getIntent().getStringsExtra("product_id")等来从通知中获取product_id。

这样,您就可以打开所需的活动,并可以使用从您的通知中获得的相关详细信息填充该活动。