iOS集成flutter_local_notifications启动崩溃,提示重复插件键FilePickerPlugin
iOS端集成flutter_local_notifications启动崩溃问题解决方案
问题排查与修复步骤
1. 移除重复的插件注册调用
你的代码中存在两次GeneratedPluginRegistrant.register调用:一次在setPluginRegistrantCallback闭包内,另一次在闭包外单独执行。重复注册会引发插件初始化冲突,导致启动崩溃。
修改后的代码移除闭包外的冗余注册:
import UIKit import Firebase import Flutter 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) } if #available(iOS 10.0, *){ UNUserNotificationCenter.current().delegate = self } return super.application(application, didFinishLaunchingWithOptions: launchOptions) } }
2. 优化初始化顺序
确保FlutterLocalNotificationsPlugin.setPluginRegistrantCallback在super.application(...)调用前执行,依托super的初始化逻辑完成基础配置,避免初始化时机冲突。
3. 修正UNUserNotificationCenterDelegate设置
FlutterAppDelegate已默认实现UNUserNotificationCenterDelegate协议,无需强制类型转换,直接设置delegate = self即可,规避类型转换可能引发的异常。
4. 清理并重新安装依赖
- 执行
pod deintegrate清理旧Pod依赖,再运行pod install重新安装插件 - 清理Xcode缓存(Cmd+Shift+K),重启Xcode后重新编译运行
5. 验证版本兼容性
检查flutter_local_notifications版本与当前Flutter SDK是否兼容,避免因版本不匹配导致的初始化异常。
内容的提问来源于stack exchange,提问作者Nissaba
相关产品推荐
相关产品推荐

