2017-07-07 18 views
-1

我将设法获取数据时应用程序在这样格式当应用程序在背景火力通知具有有效载荷,然后远程消息的方法的呼叫通知或不

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

所以数据在onMessageReceived递送背景(RemoteMessage消息)方法或不我不知道任何人可以帮助我解决这个问题。

+0

如果您使用的FCM那么它会在'onMessageReceived(RemoteMessage消息)传递' –

回答

1

对于通知可以点击,当你的应用程序在后台运行,你需要在您的通知有效载荷的click_action属性。

请检查该section的火力地堡文档的。

另外,当您定义click_action属性时,您还需要在您希望启动的活动的<intent-filter>中对应的<action>属性。

video解释了它在相当详细的方式。

不过,请注意,如果您要发送从火力地堡控制台通知您不能设置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。

这样,你就可以打开所需的活性,并能与您的通知获得相关的细节来填充它。

相关问题