You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter调用Firebase Auth时iOS端unrecognized selector崩溃排查

崩溃原因

崩溃由Info.plist配置类型错误直接引发:

  1. iOS 系统规定NSAppTransportSecurity字段的值必须是字典(Dictionary)类型,但你的配置中错误将其设为了字符串类型:
<key>NSAppTransportSecurity</key>
<string>for the video player to run</string>
  1. Firebase Auth依赖的GTMSessionFetcher网络库初始化时,会读取该字段,默认预期拿到字典对象,随后调用字典的objectForKey:方法读取NSAllowsArbitraryLoads配置。由于实际拿到的是__NSCFString(字符串)类型实例,字符串没有objectForKey:方法,直接触发unrecognized selector sent to instance异常,导致应用崩溃,和你贴出的崩溃栈、代码触发点完全匹配。
修复步骤
  • 修正NSAppTransportSecurity配置
    删掉错误的字符串值,替换为合法的字典结构。如果不需要放开非HTTPS请求限制,使用如下配置即可:
    <key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <false/>
    </dict>
    
    如果视频播放等功能确实需要允许HTTP请求,将NSAllowsArbitraryLoads对应的值改为<true/>即可,注意所有ATS相关配置都必须写在这个字典内部,不能直接给NSAppTransportSecurity赋值字符串。
  • 合并重复配置项
    你当前的Info.plist存在多处重复键:重复的CFBundleURLTypes、重复的NSCameraUsageDescription、重复的NSMicrophoneUsageDescription。plist中重复键会被后写入的值覆盖,可能引发其他功能异常,需要合并:
    • 将Facebook、Google登录的URL Scheme统一放到同一个CFBundleURLTypes数组中
    • 删除重复的权限提示文案,仅保留实际需要对外展示的版本
  • 清理缓存重新编译
    配置修改完成后执行以下命令清理构建缓存,再重新运行应用:
    flutter clean
    flutter pub get
    flutter run
    

内容的提问来源于stack exchange,提问作者dasKamel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 09:30:39