【问题标题】:Fire-base push notification starts the app when message received even whiteout clicking the messageFire-base 推送通知在收到消息时启动应用程序,即使没有点击消息
【发布时间】:2018-03-06 15:35:07
【问题描述】:

Android 应用程序的 Firebase 推送通知,在应用程序未运行(被终止)时收到消息时启动应用程序,即使没有点击通知。有谁知道这是默认的 Android 行为还是我需要更改一些设置?

【问题讨论】:

  • 这取决于您发送的消息类型。如果应用程序未处于活动状态,系统将处理仅通知消息。但数据消息将始终传递到您应用的 onMessageReceived 处理程序。
  • @FrankvanPuffelen,即使我不添加任何数据(仅限通知),它也会启动我的应用程序,这是默认行为吗?
  • 我不确定。这实际上取决于“启动我的应用程序”的含义。您发送了什么,您看到应用中的哪些代码被触发?
  • @FrankvanPuffelen,“启动我的应用程序”是指当应用程序既不在后台也不在前台时,当收到通知时,它将打开应用程序(启动),而不点击通知,但是当应用程序处于后台或前台时,除非您触摸(单击)通知,否则不会发生任何事情。

标签: android firebase firebase-cloud-messaging


【解决方案1】:

我仍然不清楚您所说的打开应用程序(开始)是什么意思。

当仅通知消息发送到不在内存中的应用程序(版本 11.8.0)时,我看到以下内容:

  • 应用程序的一个实例已创建。即使应用未定义扩展 FirebaseMessagingService 的服务,也会发生这种情况。
  • 如果应用确实定义了FirebaseMessagingService,则创建和销毁服务。 onMessageReceived() 未被调用。
  • 在这两种情况下,所有处理都在后台进行;在用户点击通知之前,不会启动任何活动。
  • 这些观察结果基于我的消息服务和Application 实例输出的日志消息。

虽然the documentation 中的描述,例如FCM 代表客户端应用程序自动向最终用户设备显示消息,但正确地表明消息的​​处理是由“由系统”,他们没有提到应用程序实例的创建是该处理的副作用。

【讨论】:

  • 我扩展了 FireBaseMessagingService,每次都会调用 onMessageReceived,我认为这就是目的。通过打开应用程序(开始)我的意思是当应用程序不活动时,它打开应用程序而不点击
  • 您能否更新您的帖子以包含您发送的消息。对于非前台应用,onMessageReceived() 仅应在有数据字段时调用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-27
  • 1970-01-01
  • 2020-07-16
  • 2015-08-09
  • 1970-01-01
  • 2018-01-09
相关资源
最近更新 更多