我正在尝试让我的应用程序在后台处理数据有效负载。
"data": {
"aKey": "aValue",
"customtitle": "my title",
"custombody": "my body",
"customimage": "my image"
},
"notification": {
"title": "my title",
"text": "some text",
"icon": "icon to use",
"sound": "soundtouse"
}
访问在后台应用中处理通知消息部分下的文档
..数据有效负载在启动器活动的意图附加内容中提供。
在我的应用程序中,onMessageReceived
只接收一个RemoteMessage
对象。
我尝试覆盖onMessageReceived
签名以接受Intent
但这不起作用。
除了文档中的最后一句话之外,我找不到任何教程或解释。
有人可以告诉我哪里有关于如何在应用程序处于后台或关闭时处理数据有效负载的示例?
如果应用程序处于打开状态,则它会从我的onMessageReceived
(远程消息('方法中正常处理数据有效负载。
您只遇到 FCM 的预期行为。在您链接的文档中,该表显示,在使用data
有效负载时,仅当消息有效负载只有数据时,它才会触发onMessageReceived()
:
"data": {
"aKey": "aValue",
"customtitle": "my title",
"custombody": "my body",
"customimage": "my image"
}
但是,您在消息负载中同时使用了notification
和data
。这意味着当您的应用在后台运行时,有效负载将由 Android 系统本身处理,并在通知托盘中显示notification
详细信息。
然后,当用户点击该 Android 处理的通知时,它应该打开您的应用程序(通常是 MainActivity 或您使用 click_action
设置打开的任何活动(,然后从那里开始,您应该像这样处理意图:
Intent intent = getIntent();
String pos = getIntent().getStringExtra("<YOUR KEY HERE>");
if(pos !=null){
selectDrawerItem(navigationView.getMenu().getItem(Integer.parseInt(pos)));
}