【问题标题】:Android device not receiving notification message when the app is terminated using Flutter and FCM使用 Flutter 和 FCM 终止应用程序时,Android 设备未收到通知消息
【发布时间】:2019-02-16 13:11:27
【问题描述】:

我正在使用 Flutter 开发应用程序,并且我正在使用 FCM 和 firebase_messaging Flutter 插件实现推送通知:

https://pub.dartlang.org/packages/firebase_messaging

在这个插件的Readme.md中,它说当Android设备在应用程序终止时收到数据消息时,该消息将丢失,但当设备收到通知消息时,该消息将显示在应用程序托盘是应用程序已终止还是仅在后台运行。

我已经实现了这个插件,但它的行为不像 Readme.md 描述的那样。当应用程序终止时,通知消息在我的 android 设备上丢失。

这是我发送到设备的示例负载:

var payload = {
  notification: {
    title: `message from somebody`,
    body: `message text here`,
    }
}

我可能做错了什么?我是在负载中遗漏了什么,还是其他什么?

【问题讨论】:

  • 由于客户端应用是 Android,this post 可能会有所帮助。
  • 谢谢。我想我对此无能为力吧?大声笑

标签: android firebase-cloud-messaging flutter android-notifications


【解决方案1】:

firebase_messaging 包不支持在应用程序在 android 中终止并且仅当应用程序打开或在后台时接收数据消息。
当应用程序在 android 中终止时,它说关于数据消息接收: 插件不支持,消息丢失。
并且关于通知,通知被传递到系统托盘。当用户点击它打开应用时,如果 click_action: FLUTTER_NOTIFICATION_CLICK 设置了,就会触发 onLaunch。

查看接收消息中的该表: https://pub.dartlang.org/packages/firebase_messaging#-readme-tab-

【讨论】:

  • 所以我想我们必须实现一个原生 Android 服务来处理这些后台消息(当应用程序终止时),对吧?或者原生代码结合 Flutter 有什么特别之处?
  • 很长一段时间我都没有使用它,但几乎是的,也许可以解决一些收到的用 java native 编写的问题。
  • 我该怎么做。
【解决方案2】:

您是否尝试过使用 Firebase 控制台发送消息。使用 Firebase 控制台发送测试消息可能是值得的。 这样,您将能够消除有效载荷中出现错误的可能性。

要验证的另一件事是在应用程序中实现onMessage onResumeonLaunch,并在您的消息中包含click_action: FLUTTER_NOTIFICATION_CLICK 的自定义数据键值对。

最后一件事是检查 google-services.json 是否放置在正确的文件夹 android/app 中,并检查 android/build.gradleandroid/app/build.gradle 是否已正确修改。

我希望我能提供一点帮助。让我知道这是否有效。

【讨论】:

  • 我实际上尝试从 Firebase 控制台发送通知,并且发生了同样的情况。在后台收到通知,但在应用终止时没有收到通知。
  • 我尝试在有效载荷的数据中使用 click_action 键发送消息,但仍然相同...由于我在应用程序处于后台时收到通知,所以我认为我的 google-services.json配置正确。
猜你喜欢
  • 2021-06-06
  • 2021-06-10
  • 2020-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-11
  • 2020-04-25
相关资源
最近更新 更多