Flutter firebase 消息传递 v9.0.0 - 不触发事件

San*_*nti 6 push-notification flutter firebase-cloud-messaging

我有一个使用 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");
});
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

小智 2

迁移并升级到 9.0.0 后,我遇到了完全相同的问题。

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

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

通知现在又对我有用了。在插件修复之前,这应该对您有用。