Flutter集成firebase_authentication后iOS端登录崩溃问题求助
问题根因确认
导致应用直接崩溃的不是Firebase相关服务,是iOS定位权限配置缺失。Firebase相关输出为警告信息,不会触发SIGTERM级别的崩溃。
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'To use location in iOS8 and above you need to define either NSLocationWhenInUseUsageDescription or NSLocationAlwaysUsageDescription in the app bundle's Info.plist file'
以上报错为直接崩溃触发点。
修复步骤
1. 修复定位权限配置(解决崩溃问题)
打开你的Flutter项目中ios/Runner/Info.plist文件,在<dict>标签内添加对应权限声明:
- 如果你的应用仅在使用期间需要定位,添加:
<key>NSLocationWhenInUseUsageDescription</key> <string>需要获取您的位置信息以提供[填写实际使用场景,比如"附近门店查询""位置打卡"]服务</string>
- 如果你的应用需要后台持续定位,添加:
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key> <string>需要持续获取您的位置信息以提供[填写后台定位实际场景]服务</string> <key>NSLocationWhenInUseUsageDescription</key> <string>需要获取您的位置信息以提供[填写实际使用场景]服务</string>
添加后保存文件,重新运行项目即可解决崩溃问题。
2. 可选修复Firebase相关警告(非必须,可优化运行表现)
- No app has been configured yet 警告:确认你已在
main.dart的main函数中初始化Firebase,示例代码:
void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); runApp(const MyApp()); }
- aps-environment 权限缺失警告:如果你的应用需要使用Firebase推送通知,打开Xcode项目,进入
Signing & Capabilities标签,点击+ Capability添加Push Notifications权限,同时添加Background Modes权限并勾选Remote notifications选项即可。 - nw_hash_table_apply 空指针警告:该警告为iOS 15系统底层网络库的已知问题,不影响应用功能,可忽略,升级到更高版本的Flutter和iOS SDK可自动消除。
验证方法
重新执行flutter run命令启动项目,登录环节不再触发崩溃即可确认修复完成。
内容的提问来源于stack exchange,提问作者rmarquet21
相关产品推荐
相关产品推荐

