Ionic 3 Native Geofence插件在Xcode 9中因不支持Swift 3无法运行求助
解决Ionic 3 Native Geofence插件iOS不支持Swift 3的问题
嘿,我之前维护Ionic 3项目时也碰到过这个iOS兼容坑,给你几个经过实践验证的解决方案,你可以根据项目情况选:
方案一:升级到Swift 3兼容的Geofence插件分支
官方旧版插件对Swift 3支持确实拉胯,但社区有维护的兼容分支,操作步骤如下:
- 先卸载旧插件,清理残留:
ionic cordova plugin remove cordova-plugin-geofence npm uninstall @ionic-native/geofence - 安装Swift 3兼容分支,同时匹配Ionic 3对应的
@ionic-native版本(Ionic 3适配4.x系列,别装5.x):ionic cordova plugin add https://github.com/cowbell/cordova-plugin-geofence.git#swift3 npm install @ionic-native/geofence@4.20.0
方案二:手动修改Xcode项目的Swift版本配置
不想换插件的话,直接在Xcode里调整项目设置也能搞定:
- 打开
platforms/ios目录下的项目xcodeproj文件 - 选中项目根节点,切换到
Build Settings标签 - 搜索
Swift Language Version,将其修改为Swift 3.0 - 顺便检查
Always Embed Swift Standard Libraries选项,确保设置为Yes,避免运行时出现Swift依赖缺失的错误
方案三:替换为更活跃的替代插件
如果上面两种方法都没效果,建议换个维护更积极的插件,比如cordova-plugin-background-geolocation,它对iOS支持更完善,也兼容Swift 3及以上版本:
- 安装新插件:
ionic cordova plugin add cordova-plugin-background-geolocation npm install @ionic-native/background-geolocation - 这个插件不仅支持地理围栏,还自带后台定位功能,只需稍微调整代码逻辑适配它的API即可,官方文档很清晰。
额外注意事项
- 务必在iOS项目的
Info.plist中添加定位权限描述,比如NSLocationAlwaysUsageDescription和NSLocationWhenInUseUsageDescription,否则系统会直接阻止地理围栏功能运行 - 每次修改插件后,建议先移除iOS平台再重新添加,避免缓存导致的奇怪问题:
ionic cordova platform remove ios ionic cordova platform add ios
内容的提问来源于stack exchange,提问作者sumanta.k
相关产品推荐
相关产品推荐

