【发布时间】:2021-09-21 07:21:28
【问题描述】:
我知道 firebaseMessaging.configure 已被弃用,我正在尝试切换到新格式 由于 OnMessage、OnLaunch 和 OnResume 都在同一条线上,我一直在努力实现这一目标 我遇到了一些参考资料,但不确定如何像前一个那样将三者合二为一,不确定我是否应该这样做
下面是之前和之后的图片
void configureFirebase(FirebaseMessaging _firebaseMessaging) {
try {
_firebaseMessaging.configure(
onMessage: notificationOnMessage,
onLaunch: notificationOnLaunch,
onResume: notificationOnResume,
/* FirebaseMessaging.onMessage.listen((RemoteMessage message) {
RemoteNotification notification = message.notification;
AndroidNotification android = message.notification?.android;
});
FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) {
print('A new onMessageOpenedApp event was published!');
Navigator.pushNamed(context, '/message',
arguments: MessageArguments(message, true));
});
*/
} catch (e) {
print(CustomTrace(StackTrace.current, message: e));
print(CustomTrace(StackTrace.current, message: 'Error Config Firebase'));
}
}
Future notificationOnResume(Map<String, dynamic> message) async {
print(CustomTrace(StackTrace.current, message: message['data']['id']));
try {
if (message['data']['id'] == "orders") {
settingRepo.navigatorKey.currentState
.pushReplacementNamed('/Pages', arguments: 2);
} else if (message['data']['id'] == "messages") {
settingRepo.navigatorKey.currentState
.pushReplacementNamed('/Pages', arguments: 3);
}
} catch (e) {
print(CustomTrace(StackTrace.current, message: e));
}
}
Future notificationOnLaunch(Map<String, dynamic> message) async {
String messageId = await settingRepo.getMessageId();
try {
if (messageId != message['google.message_id']) {
await settingRepo.saveMessageId(message['google.message_id']);
if (message['data']['id'] == "orders") {
settingRepo.navigatorKey.currentState
.pushReplacementNamed('/Pages', arguments: 2);
} else if (message['data']['id'] == "messages") {
settingRepo.navigatorKey.currentState
.pushReplacementNamed('/Pages', arguments: 3);
}
}
} catch (e) {
print(CustomTrace(StackTrace.current, message: e));
}
}
Future notificationOnMessage(Map<String, dynamic> message) async {
Fluttertoast.showToast(
msg: message['notification']['title'],
toastLength: Toast.LENGTH_LONG,
gravity: ToastGravity.TOP,
timeInSecForIosWeb: 6,
);
}
}
【问题讨论】:
-
我建议您将代码基于 Flutterfire 在其 GitHub 存储库中提供的示例。见github.com/FirebaseExtended/flutterfire/tree/master/…
-
你好 @GrahamD 我以前看过它,但是当我复制代码时,我收到一个错误,就像你在我的帖子中看到的那样,不确定我需要什么部分,我不需要什么部分跨度>
标签: firebase flutter dart firebase-cloud-messaging