我在Android上使用Firebase云消息传递,我遇到了以下问题。处理应用程序在后台时收到的通知时会发生此问题。文档说明如下:
当您的应用在后台时,Android会指示通知 消息到系统托盘。用户点击通知即可打开 应用程序启动器默认情况下。
这包括同时包含通知和数据有效负载的消息 (以及从Notifications控制台发送的所有消息)。在这些 例如,通知被传送到设备的系统托盘,和 数据有效负载是在您的意图的附加内容中提供的 发射器活动。
即使这是大多数时候发生的事情,但是当发射器活动未打开时,我发现了一些边缘情况。相反,应用程序只是从backstack中最后一个活动的后台恢复,使我无法获得有效负载。
我每次都可以通过终止进程并通过系统托盘的通知打开应用程序来重现此问题。第一次点击通知时,启动器活动会按照文档中的说明打开,但通过点击任何后续通知,只需恢复应用程序,而无需先执行启动器活动。
我不确定我做错了什么,或者Firebase的SDK中是否存在错误。你知道为什么会这样吗?
我正在测试的通知是显示消息通知(不是数据通知),它也有一个有效负载。
{
"to": "d-3qyvyqefU:APA91bG_nHNYeYuKwB3oIvRKStVgSyelTIhX6rtu6LGPAjgo-LGDVk9iFO5LWZ-XFMeeRVkZm0suMyJAnWORWbZlMaVcHmhFTZOKPI_A-D2wYXM0SIIT8pZZ2g4W55S1bz9YD5y625fv",
"priority": "high",
"content_available": true,
"registration_id": "d-3qyvyqefU:APA91bG_nHNYeYuKwB3oIvRKStVgSyelTIhX6rtu6LGPAjgo-LGDVk9iFO5LWZ-XFMeeRVkZm0suMyJAnWORWbZlMaVcHmhFTZOKPI_A-D2wYXM0SIIT8pZZ2g4W55S1bz9YD5y625fv",
"collapse_key": "Collapse Key",
"data": {
"type": "default",
"person": "2123435",
"token": "asdmmio23j4123azde3"
},
"notification": {
"type": "default",
"title": "Howdie!",
"body": "Say hi to your new friend!"
}
}
答案 0 :(得分:0)
对于仍然面临此问题的所有人,FirebaseMessagingService类中有一个公开Intent对象的方法。您可以覆盖它并执行以下操作:
@Override
protected int zzaa(Intent intent) {
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
return super.zzaa(intent);
}
上面的代码应该可以解决问题,但很可能Firebase的人员将来会改变访问修饰符 - 如果还没有的话。我已经打开了一张票,并确认他们可以重现这种行为,并会在某些时候修复错误。