我已经尝试了数周来使iOS上的推送通知正常工作,但一直没有成功。我已经仔细查阅了文档以验证我的配置。然而,安卓上的推送通知正常工作。
我还尝试了直接从Firebase消息控制台向iOS发送消息,但仍然没有成功。我也尝试了许多之前在Stack Overflow上的建议,但都没有成功。 Flutter IOS FCM push notification not coming into notification bar Flutter Push notification not displaying on IOS
如何配置通知的片段
我在我的Info.plist文件中也有以下内容。
我还尝试了直接从Firebase消息控制台向iOS发送消息,但仍然没有成功。我也尝试了许多之前在Stack Overflow上的建议,但都没有成功。 Flutter IOS FCM push notification not coming into notification bar Flutter Push notification not displaying on IOS
https://github.com/FirebaseExtended/flutterfire/issues/1677
iOS FirebaseCloudMessaging Notifications 在调试/测试模式和发布模式下无法工作
我正在使用运行在 iOS 14.6 上的 iPhone 12。 我所使用的 Xcode 版本是 12.5。 Xcode 的配置如下。
AppDelegate 文件的代码
import UIKit
import Flutter
import Firebase
import FirebaseMessaging
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
override func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
Messaging.messaging().apnsToken = deviceToken
super.application(application, didRegisterForRemoteNotificationsWithDeviceToken: deviceToken)
}
}
请求推送通知的代码
Future<void> notficationsPermission () async {
FirebaseMessaging messaging = FirebaseMessaging.instance;
NotificationSettings settings = await messaging.requestPermission(
alert: true,
announcement: true,
badge: true,
carPlay: false,
criticalAlert: true,
provisional: false,
sound: true,
);
print('User granted permission: ${settings.authorizationStatus}');
String uid = Pref.getString(Keys.USER_ID);
var databaseReference = FirebaseDatabase.instance.reference();
if(settings.authorizationStatus == AuthorizationStatus.authorized){
notficationStatus = true;
await FirebaseMessaging.instance.setForegroundNotificationPresentationOptions(
alert: true, // Required to display a heads up notification
badge: true,
sound: true,
);
}
else{
notficationStatus = false;
}
}
}
如何配置通知的片段
return admin.messaging().sendToTopic(
topicName, {
android: {
priority: "high",
},
// Add APNS (Apple) config
apns: {
payload: {
aps: {
contentAvailable: true,
},
},
headers: {
"apns-push-type": "background",
"apns-priority": "5", // Must be `5` when `contentAvailable` is set to true.
"apns-topic": "io.flutter.plugins.firebase.messaging", // bundle identifier
},
},
notification: {
title: snapshot2.val().group_name +
": new chat message",
body: name +":"+snapshot.val().message,
clickAction: "FLUTTER_NOTIFICATION_CLICK",
},
});
我在我的Info.plist文件中也有以下内容。
<key>FirebaseAppDelegateProxyEnabled</key>
<string>0</string>