iOS模拟器本地传图至Firebase Storage模拟器遇未知错误求助
解决iOS模拟器上传本地Firebase Storage模拟器报错的问题
针对你遇到的iOS模拟器上传报错(Android端正常),结合报错信息和场景,给出以下排查和解决步骤:
严格保证Storage模拟器配置的执行顺序
报错中的警告明确提示模拟器设置必须在任何Storage操作前完成,务必把配置代码放在最前端,早于runApp执行:void main() async { WidgetsFlutterBinding.ensureInitialized(); await Firebase.initializeApp(); // 先配置Storage模拟器,再初始化任何Storage实例或执行上传操作 FirebaseStorage.instance.useStorageEmulator('127.0.0.1', 9199); runApp(const MyApp()); }注意:热重载后出现该警告可忽略,但冷启动必须严格遵循此顺序。
替换localhost为127.0.0.1或局域网IP
iOS模拟器对localhost的解析可能存在异常,建议直接用127.0.0.1替代,或使用电脑的局域网IP(如192.168.1.100)。可在模拟器的Safari中访问http://127.0.0.1:9199,若能看到连接响应(即使是404),说明网络通路正常。配置iOS ATS允许本地HTTP请求
iOS默认禁止HTTP请求,而本地Storage模拟器使用HTTP协议,需在Info.plist中添加ATS配置:<key>NSAppTransportSecurity</key> <dict> <key>NSExceptionDomains</key> <dict> <key>127.0.0.1</key> <dict> <key>NSIncludesSubdomains</key> <true/> <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key> <true/> </dict> </dict> </dict>开发环境下也可临时用
NSAllowsArbitraryLoads允许所有HTTP请求。升级Firebase CLI并重启模拟器
旧版本Firebase模拟器可能存在iOS兼容性问题,执行命令升级CLI:npm install -g firebase-tools完全关闭所有Firebase模拟器后重新启动,查看模拟器控制台日志是否有来自iOS模拟器的连接请求。
冷启动测试,规避热重载干扰
热重载可能导致模拟器配置未正确生效,每次修改配置后,停止iOS模拟器中的App,重新运行项目测试。
内容的提问来源于stack exchange,提问作者bosnianKingdom
相关产品推荐
相关产品推荐

