iPhone端Flutter应用无法接收Firebase推送通知求助
Flutter iOS端无法接收通知问题求助
我在Flutter应用中使用flutter_local_notifications插件实现通知功能,Android端无论应用处于前台还是后台都能正常接收通知,但iPhone端完全无法接收。我已经参考过多个教程并多次查阅官方文档,仍未解决问题,以下是我的相关代码:
AppDelegate.swift 文件
import UIKit import Flutter import FirebaseCore import flutter_local_notifications @UIApplicationMain @objc class AppDelegate: FlutterAppDelegate { override func application( _ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) -> Bool { FirebaseApp.configure() FlutterLocalNotificationsPlugin.setPluginRegistrantCallback { (registry) in GeneratedPluginRegistrant.register(with: registry) } GeneratedPluginRegistrant.register(with: self) if #available(iOS 10.0, *) { UNUserNotificationCenter.current().delegate = self as? UNUserNotificationCenterDelegate } return super.application(application, didFinishLaunchingWithOptions: launchOptions) } }
通知服务类代码
import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:nezrouge/src/constants.dart'; class LocalNotificationsServices { static final FlutterLocalNotificationsPlugin notificationsPlugin = FlutterLocalNotificationsPlugin(); static void initialize() async { const AndroidInitializationSettings initializationSettingsAndroid = AndroidInitializationSettings("@drawable/ic_stat_logo"); DarwinInitializationSettings initializationSettingsDarwin = const DarwinInitializationSettings( requestSoundPermission: true, requestBadgePermission: true, requestAlertPermission: true, ); InitializationSettings initializationSettings = InitializationSettings( android: initializationSettingsAndroid, iOS: initializationSettingsDarwin); await notificationsPlugin.initialize(initializationSettings); } static void showNotification(RemoteMessage message) async { const AndroidNotificationDetails androidNotificationDetails = AndroidNotificationDetails( "pushnotification", "pushnotificationchannel", importance: Importance.max, priority: Priority.high, playSound: true, color: primaryColor, largeIcon: DrawableResourceAndroidBitmap("@mipmap/ic_launcher"), channelShowBadge: true, ); const DarwinNotificationDetails iosNotificationDetails = DarwinNotificationDetails(); final id = DateTime.now().millisecondsSinceEpoch ~/ 1000; const NotificationDetails notificationsDetails = NotificationDetails( android: androidNotificationDetails, iOS: iosNotificationDetails, ); await notificationsPlugin.show(id, message.notification!.title, message.notification!.body, notificationsDetails); } }
main.dart 代码
import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:nezrouge/firebase_options.dart'; import 'package:nezrouge/src/notifications/notification_manager.dart'; import 'src/app.dart'; Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async { await Firebase.initializeApp(); } Future main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform); FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler); FirebaseMessaging.instance.requestPermission(); LocalNotificationsServices.initialize(); FirebaseMessaging messaging = FirebaseMessaging.instance; NotificationSettings settings = await messaging.requestPermission( alert: true, announcement: true, badge: true, carPlay: true, criticalAlert: false, provisional: false, sound: true, ); FirebaseMessaging.onMessage.listen( (RemoteMessage message) { if (message.notification != null) { LocalNotificationsServices.showNotification(message); } }, ); final fcmToken = await FirebaseMessaging.instance.getToken(); print(fcmToken); SystemChrome.setPreferredOrientations( [ DeviceOrientation.portraitUp, DeviceOrientation.portraitDown, ], ); runApp( MyApp( fcmToken: fcmToken.toString(), ), ); }
内容的提问来源于stack exchange,提问作者wouilson
相关产品推荐
相关产品推荐

