启动时恢复时和在 ios 缺少插件实现中不起作用的消息时会触发 Flutter FCM



Flutter FCM 在启动时恢复和消息在 iOS 中不起作用时缺少插件实现 启动时触发 dart 服务,在 android 上工作正常 以下是用于处理 fcm 的代码。在IOS中,当应用程序在后台和单击的应用程序打开时,将触发通知


_firebaseMessaging.configure(
onMessage: (Map<String, dynamic> message) async {
print(message);
FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
new FlutterLocalNotificationsPlugin();
// initialise the plugin. app_icon needs to be a added as a drawable resource to the Android head project
var initializationSettingsAndroid =
new AndroidInitializationSettings('launcher_icon');
var initializationSettingsIOS = new IOSInitializationSettings(
onDidReceiveLocalNotification: onDidReceiveLocalNotification);
var initializationSettings = new InitializationSettings(
initializationSettingsAndroid, initializationSettingsIOS);
flutterLocalNotificationsPlugin.initialize(initializationSettings,
onSelectNotification: onSelectNotification);
var androidPlatformChannelSpecifics = AndroidNotificationDetails(
'123', 'convoy notification', 'convoy notification',
importance: Importance.Max,
priority: Priority.High,
ticker: 'ticker');
var iOSPlatformChannelSpecifics = IOSNotificationDetails();
var platformChannelSpecifics = NotificationDetails(
androidPlatformChannelSpecifics, iOSPlatformChannelSpecifics);
await flutterLocalNotificationsPlugin.show(
0,
message['notification']['title'],
message['notification']['body'],
platformChannelSpecifics,
payload: message['data']['payload']);
},
onBackgroundMessage: myBackgroundMessageHandler,
onLaunch: (Map<String, dynamic> message) async {
var string = message["data"]["payload"];
var payload = jsonDecode(string);
print(payload);
if (payload != null) {
var type = payload["refresh"];
if (type == "OFFERS") {
Future.delayed(Duration(seconds: 3), () {
_navigateToOffers(payload["id"]);
});
} else if (type == "REQUESTS") {
Future.delayed(Duration(seconds: 3), () {
_navigateToRequests(payload["id"]);
});
}
}
//_navigateToItemDetail(message);
},
onResume: (Map<String, dynamic> message) async {
var string = message["data"]["payload"];
var payload = jsonDecode(string);
print(payload);
if (payload != null) {
var type = payload["refresh"];
if (type == "OFFERS") {
_navigateToOffers(payload["id"]);
} else if (type == "REQUESTS") {
_navigateToRequests(payload["id"]);
}
}
// _navigateToItemDetail(message);
},
);
_firebaseMessaging.requestNotificationPermissions(
const IosNotificationSettings(sound: true, badge: true, alert: true));
}

尝试删除 ios/Runner/AppDelegate 中的这些行.swift :

if #available(iOS 10.0, *) { UNUserNotificationCenter.current().delegate = self as? UNUserNotificationCenterDelegate }

我遇到了同样的问题,删除此代码后,我的应用程序运行良好。