【问题标题】:FCM launcher activity not always openedFCM 启动器活动并不总是打开
【发布时间】: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


【解决方案1】:

对于那些仍然面临这个问题的人,FirebaseMessagingService 类中有一个方法可以公开 Intent 对象。您可以覆盖它并执行以下操作:

@Override
protected int zzaa(Intent intent) {
   intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
   return super.zzaa(intent);
}

上面的代码应该可以解决这个问题,但 Firebase 的人很可能会在未来更改访问修饰符 - 如果他们还没有这样做的话。我已经在他们这边打开了一张票,并确认他们可以重现此行为并会在某个时候修复该错误。

【讨论】:

  • 你使用的是哪个版本的sdk
  • 编译 'com.google.firebase:firebase-messaging:9.2.0'
  • 我也尝试过使用 click_action 属性和 singleInstance 启动模式,它正在工作。你试过了吗?
  • 我想是的,如果我记得很好,当时它并没有起作用。也许值得尝试更新版本
  • 我使用 sdk 版本 9.8.0。
猜你喜欢
  • 2020-05-05
  • 1970-01-01
  • 2015-06-12
  • 2011-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-23
  • 1970-01-01
相关资源
最近更新 更多