【发布时间】:2016-08-31 08:48:31
【问题描述】:
我在 Android 上使用 Firebase 云消息传递,我遇到了以下问题。当应用程序在后台处理收到的通知时会发生这种情况。文档说明如下:
当您的应用处于后台时,Android 会发送通知 消息到系统托盘。用户点击通知会打开 默认应用启动器。
这包括同时包含通知和数据负载的消息 (以及从通知控制台发送的所有消息)。在这些 在这种情况下,通知会发送到设备的系统托盘,并且 数据有效负载是在您的意图的附加内容中交付的 启动器活动。
尽管这是大多数情况下发生的情况,但我发现了一些未打开启动器活动的边缘情况。相反,应用程序只是在后台堆栈中的最后一个活动从后台恢复,让我无法获取有效负载。
我每次都可以通过终止进程并通过系统托盘中的通知打开应用程序来重现此问题。第一次点击通知时,启动器活动会按照文档中的说明打开,但通过点击任何后续通知,应用程序会简单地恢复,而无需先通过启动器活动。
我不确定我做错了什么,或者 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!"
}
}
【问题讨论】:
-
你可以在点击通知时打开你的启动器活动,方法是在意图中给出标志,如 CLEAR_TOP && CLEAR_TASK && NEW
-
@VishalPatoliya 但问题是当应用程序在后台时,它是 FCM SDK 为我创建通知。我无法告诉它意图使用哪些标志
-
当您点击通知并且应用程序处于后台时,您希望它应该从启动器活动开始,而不是从您的上一个活动开始吗?
-
@VishalPatoliya 是的,完全正确,但这是文档中描述的“默认”行为。它应该已经以这种方式发生,并且实际上几乎每次都会发生,除了我在问题中描述的情况。我不知道为什么...
-
@AlexandruPele 我也面临这个问题,你找到解决方案了吗?
标签: android firebase firebase-cloud-messaging