我看了所有其他问题和答案,但是即使尝试了一切,我也无法解决问题。
当IOS和Android的应用程序处于前台时,我会收到通知。但是,如果我在IOS的后台运行,则需要进入应用程序以查看通知。
main.dart initState的代码
@override
void initState() {
super.initState();
_firebaseMessaging = FirebaseMessaging();
_firebaseMessaging.requestNotificationPermissions(
IosNotificationSettings(sound: true, badge: true, alert: true));
print("requested");
_firebaseMessaging.getToken().then((String token) {
assert(token != null);
print("token");
print(token);
});
_firebaseMessaging.configure(
onMessage: (Map<String, dynamic> message) async {
print("onMessage: $message");
//showNotification(message);
},
onBackgroundMessage: Platform.isIOS ? null : myBackgroundMessageHandler,
onLaunch: (Map<String, dynamic> message) async {
// this will never called, but it's ok
print("onLaunch: $message");
},
onResume: (Map<String, dynamic> message) async {
// this will never called, but it's ok
print("onResume: $message");
},
);
_firebaseMessaging.onIosSettingsRegistered
.listen((IosNotificationSettings settings) {
print("Settings registered: $settings");
});
var androidInitialize = AndroidInitializationSettings('app_icon');
var iosInitialize = IOSInitializationSettings();
var initializationSettings =
InitializationSettings(androidInitialize, iosInitialize);
//flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin();
flutterLocalNotificationsPlugin.initialize(initializationSettings,
onSelectNotification: notificationSelected);
}
我的info.plist中有与通知相关的键。
<key>FirebaseAppDelegateProxyEnabled</key>
<string>NO</string>
<key>UIBackgroundModes</key>
<array>
<string>fetch</string>
<string>processing</string>
<string>remote-notification</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
我的AppDelagete.swift文件
import UIKit
import Flutter
import Firebase
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
if FirebaseApp.app() == nil { FirebaseApp.configure()}
// if #available(iOS 10.0, *) {
// UNUserNotificationCenter.current().delegate = self as? UNUserNotificationCenterDelegate
// }
// Messaging.messaging().apnsToken = deviceToken
// super.application(application, didRegisterForRemoteNotificationsWithDeviceToken: deviceToken)
if #available(iOS 10.0, *) {
// For iOS 10 display notification (sent via APNS)
UNUserNotificationCenter.current().delegate = self
let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
UNUserNotificationCenter.current().requestAuthorization(
options: authOptions,
completionHandler: {_, _ in })
} else {
let settings: UIUserNotificationSettings =
UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
application.registerUserNotificationSettings(settings)
}
application.registerForRemoteNotifications()
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}
我尝试使用此代码发送通知
DATA='{"notification": {"body": "Body","title": "Title Title"}, "priority": "high", "data": {"click_action": "FLUTTER_NOTIFICATION_CLICK", "id": "1", "status": "done", "priority":"high"}, "to": "<TOKEN>"}'
curl https://fcm.googleapis.com/fcm/send -H "Content-Type:application/json" -X POST -d "$DATA" -H "Authorization: key=<SERVERKEY>"
非常感谢您...