Xcode运行Ionic iOS项目遇FIRMessaging无delegate属性错误求助
解决Ionic+Cordova iOS项目中
Property 'delegate' not found on object of type 'FIRMessaging'错误 我之前也碰到过一模一样的问题!这是因为新版本的Firebase Messaging(FCM)已经把delegate属性从FIRMessaging类迁移到Messaging类了,而你用的旧版cordova-plugin-fcm还在调用过时的API,导致Xcode编译报错。给你几个实用的解决办法:
方案1:替换为维护活跃的FCM插件(推荐)
旧版的cordova-plugin-fcm已经停止更新很久了,完全跟不上Firebase SDK的迭代。建议换成cordova-plugin-fcm-with-dependecy-updated,这个插件会自动适配最新的Firebase依赖:
- 先移除旧插件和依赖:
cordova plugin remove cordova-plugin-fcm npm uninstall @ionic-native/fcm - 安装新插件:
cordova plugin add cordova-plugin-fcm-with-dependecy-updated npm install @ionic-native/fcm --save - 最后重新构建iOS项目:
ionic cordova build ios
重新用Xcode打开项目,应该就能解决这个错误了。
方案2:手动修改旧插件源码(应急用)
如果你暂时不想换插件,可以手动修改cordova-plugin-fcm的iOS源码来适配新API:
- 找到项目目录下的
plugins/cordova-plugin-fcm/src/ios/FCMPlugin.m文件 - 找到所有调用
[FIRMessaging messaging].delegate的代码行,全部替换为[Messaging messaging].delegate - 在文件顶部添加头文件导入:
#import <FirebaseMessaging/Messaging.h> - 保存修改后,重新执行
ionic cordova build ios
方案3:锁定Firebase SDK版本
如果上面的方法都不行,可以尝试在Xcode的Podfile里指定兼容的Firebase SDK版本:
- 打开项目
platforms/ios/Podfile文件 - 添加或修改Firebase相关的版本声明:
pod 'Firebase/Core', '~> 6.0' pod 'Firebase/Messaging', '~> 6.0' - 进入
platforms/ios目录,执行pod update更新依赖 - 重新构建项目
内容的提问来源于stack exchange,提问作者user4422315
相关产品推荐
相关产品推荐

