【问题标题】:Flutter firebase messaging v9.0.0 - Not firing eventsFlutter firebase 消息传递 v9.0.0 - 不触发事件
【发布时间】:2021-06-08 05:29:29
【问题描述】:

我有一个使用 firebase 消息传递 7.0.3 的应用程序,并且一切正常。但是当我迁移到 Firebase 消息传递 9.0.0 时,推送通知没有得到处理。

我知道该应用程序已正确链接到 Firebase 和云消息传递,因为在后台我看到推送通知正在发送,问题是当我单击该通知时,该应用程序不处理此事件。另外,当应用在前台时,不会触发接收到通知的事件。

具体来说,FirebaseMessaging.onMessage 和 FirebaseMessaging.onMessageOpenedApp 函数不起作用。我的代码是:

FirebaseMessaging.onMessage.listen((RemoteMessage message) {
  print("notification: message");
}); 
FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
  print("notification: resume");
});

永远不会调用打印,如果我在里面放更多代码也不会执行。

我也调用 FirebaseMessaging.getToken 并且我可以获得令牌,而且当应用程序在后台时,我会收到推送通知,所以不是 firebase 的链接问题。在日志中,当我收到推送时,我可以看到一条消息:收到消息广播。所以我假设推送在所有场合都到达了,我在代码中做错了。

我在 Android 和 iOS 物理设备上测试了所有案例。

有人知道为什么会这样吗?

【问题讨论】:

    标签: flutter push-notification firebase-cloud-messaging


    【解决方案1】:

    我在迁移和升级到 9.0.0 后遇到了同样的问题。

    9.0.0 插件存在一个小问题。 可以在此处找到修复程序: https://github.com/FirebaseExtended/flutterfire/issues/4949

    长话短说,如果您导航到工厂的定义 RemoteMessage.fromMap() 在将鼠标悬停在 RemoteMessage 类上时使用 Cmd+ClickCtrl+Click),在返回语句中,将 contentAvailable: map['contentAvailable'] 更改为 contentAvailable: map['contentAvailable']??false .

    通知现在再次为我工作。 在插件修复之前,这应该对您有用。

    【讨论】:

    • 感谢您的回复!但是我已经尝试过了,仍然无法正常工作。我检查了该字段以防它为 null 为假,并且我还尝试始终分配为假,但这并没有解决我的问题。
    • @Santi 答案中提到的更改应添加到 remote_message.dart 文件中(缓存),直到您获得 sdk 的下一个更新
    • 能够通过mutableContent: map['mutableContent'],更改为mutableContent: map['mutableContent']??false,来使其工作
    • 这里相同,使用消息 10.0.0 版本,该版本已经在源代码中修复了 mutableContent 和可用内容。
    • ^11.2.0 上的同样问题
    猜你喜欢
    • 2021-04-18
    • 2016-10-09
    • 2021-02-19
    • 2018-09-07
    • 2021-09-04
    • 2023-03-23
    • 1970-01-01
    • 2021-07-21
    • 2021-06-12
    相关资源
    最近更新 更多