// workaround for onLaunch: When the app is completely closed (not in the background) and opened directly from the push notification
FirebaseMessaging.instance.getInitialMessage().then((RemoteMessage message) {
print('getInitialMessage data: ${message.data}');
_serialiseAndNavigate(message);
});
// onMessage: When the app is open and it receives a push notification
FirebaseMessaging.onMessage.listen((RemoteMessage message) {
print("onMessage data: ${message.data}");
});
// replacement for onResume: When the app is in the background and opened directly from the push notification.
FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
print('onMessageOpenedApp data: ${message.data}');
_serialiseAndNavigate(message);
});
5条答案
按热度按时间1wnzp6jl1#
Firebase团队删除了Firebase消息传递.configure():
原因:
configure()
的以前实现在多次调用时(注册不同的处理程序或删除处理程序)会导致意外的副作用。此更改允许开发人员更明确地注册和删除处理程序,而不会通过流影响其他人。使用
FirebaseMessaging.onMessage
方法获取消息使用
FirebaseMessaging.onMessageOpenedApp
替换onLaunch
和onResume
处理程序。rbpvctlc2#
请检查以下示例。
https://github.com/FirebaseExtended/flutterfire/blob/master/packages/firebase_messaging/firebase_messaging/example/lib/main.dart
nafvub8i3#
根据Jitesh的回答,对我来说,需要实现
getInitialMessage
,以便在应用程序终止时(替代onLaunch)使导航工作goqiplq24#
更新一个:
***FirebaseMessagingService***对于在应用程序开始时就开始使用非常重要。为此,您需要遵循以下操作:首先声明此函数:
并在app的main(){}中调用此函数:
然后,您将能够使用以下功能:
FirebaseMessaging.onMessage方法获取消息
FirebaseMessaging.onMessageOpenedApp作为onLaunch和onResume处理程序的替代。
nx7onnlm5#
事件处理:
事件处理经过重新设计,为开发人员提供了更直观的API。基于前台的事件现在可以通过流访问:
FirebaseMessaging.onMessage当Flutter示例在前台时收到传入FCM有效载荷时,返回调用的Stream,其中包含[RemoteMessage]。
FirebaseMessaging.onMessageOpenedApp返回用户按下通过FCM显示的通知时调用的[Stream]。这将替换以前的onLaunch和onResume处理程序。
**FirebaseMessaging.onBackgroundMessage()**设置应用在后台或终止时触发的后台消息处理程序。IosNotificationSettings: