Flutter firebase messaging v9.0.0 - 不触发事件
Flutter firebase messaging v9.0.0 - Not firing events
我有一个使用 firebase messaging 7.0.3 的应用程序并且一切正常。但是当我迁移到 firebase messaging 9.0.0 时,推送通知没有得到处理。
我知道该应用程序已正确 linked 到 firebase 和云消息传递,因为在后台我看到推送通知,问题是当我单击该通知时该应用程序不处理此事件。另外,当应用程序在前台时,不会触发接收通知的事件。
具体来说,函数 FirebaseMessaging.onMessage 和 FirebaseMessaging.onMessageOpenedApp 不工作。我的代码是:
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
print("notification: message");
});
FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
print("notification: resume");
});
永远不会调用打印,如果我在里面放更多代码也不会执行。
我也调用了 FirebaseMessaging.getToken,我可以获得令牌,此外,当应用程序在后台运行时,我会收到推送通知,因此 link 不是 firebase 的问题。在日志中,当我收到推送时,我可以看到一条消息:收到消息的广播。所以我假设推送在所有情况下都会到达,而我在代码中做错了。
我在 Android 和 iOS 物理设备中测试了所有情况。
有人知道为什么会这样吗?
我在迁移并升级到 9.0.0 后遇到了这个完全相同的问题。
9.0.0 插件存在一个小问题。
修复可以在这里找到:
https://github.com/FirebaseExtended/flutterfire/issues/4949
长话短说,如果您导航到工厂的定义
RemoteMessage.fromMap()
使用 Cmd+Click 或 Ctrl+Click 同时将鼠标悬停在 RemoteMessage class 上),在return 声明,将 contentAvailable: map['contentAvailable']
更改为 contentAvailable: map['contentAvailable']??false
.
通知现在又对我有用了。
在插件修复之前,这应该对您有用。
我有一个使用 firebase messaging 7.0.3 的应用程序并且一切正常。但是当我迁移到 firebase messaging 9.0.0 时,推送通知没有得到处理。
我知道该应用程序已正确 linked 到 firebase 和云消息传递,因为在后台我看到推送通知,问题是当我单击该通知时该应用程序不处理此事件。另外,当应用程序在前台时,不会触发接收通知的事件。
具体来说,函数 FirebaseMessaging.onMessage 和 FirebaseMessaging.onMessageOpenedApp 不工作。我的代码是:
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
print("notification: message");
});
FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
print("notification: resume");
});
永远不会调用打印,如果我在里面放更多代码也不会执行。
我也调用了 FirebaseMessaging.getToken,我可以获得令牌,此外,当应用程序在后台运行时,我会收到推送通知,因此 link 不是 firebase 的问题。在日志中,当我收到推送时,我可以看到一条消息:收到消息的广播。所以我假设推送在所有情况下都会到达,而我在代码中做错了。
我在 Android 和 iOS 物理设备中测试了所有情况。
有人知道为什么会这样吗?
我在迁移并升级到 9.0.0 后遇到了这个完全相同的问题。
9.0.0 插件存在一个小问题。 修复可以在这里找到: https://github.com/FirebaseExtended/flutterfire/issues/4949
长话短说,如果您导航到工厂的定义
RemoteMessage.fromMap()
使用 Cmd+Click 或 Ctrl+Click 同时将鼠标悬停在 RemoteMessage class 上),在return 声明,将 contentAvailable: map['contentAvailable']
更改为 contentAvailable: map['contentAvailable']??false
.
通知现在又对我有用了。 在插件修复之前,这应该对您有用。