React Native项目XCode日志持续输出Socket SO_ERROR问题排查求助
碰到这种不影响运行但持续输出的日志确实闹心,我帮你一步步排查,大概率能定位到是哪个Firebase组件或者配置出了问题:
排查React Native项目中Firebase Pods引发的Socket连接拒绝错误
首先先拆解下日志里的错误:SO_ERROR [61: Connection refused] 意味着你的App尝试连接某个端口,但目标服务器没有监听这个端口;后面的nw_connection_get_connected_socket on unconnected nw_connection是因为连接还没建立就尝试获取socket,和前面的连接拒绝是连锁反应。
第一步:先确认Firebase Pods的版本兼容性
- 打开终端,进入项目的ios目录,执行
pod outdated查看当前Pods是否有可用更新,旧版本的Firebase组件可能存在已知的网络连接bug,更新到稳定版说不定能直接解决问题。 - 确保你的React Native版本和Firebase Pods版本匹配,比如RN 0.60+通常需要Firebase 6.x及以上版本,版本不兼容也可能触发奇怪的网络错误。
第二步:逐个禁用Firebase Pods定位元凶
既然你怀疑是Firebase/Core、Firebase/Messaging、Firebase/Crash中的一个,那就用排除法测试:
- 先在Podfile里注释掉
pod 'Firebase/Crash',执行pod install,然后clean XCode的build文件夹(快捷键Cmd+Shift+K),清除模拟器/真机缓存后重新运行,看日志错误是否消失。 - 如果错误还在,继续注释掉
pod 'Firebase/Messaging',重复pod install、clean、运行的步骤。 - 最后只保留
Firebase/Core,测试是否还会出现错误。
- 注意:每次修改Podfile后一定要彻底清理缓存,避免旧的编译残留干扰测试结果。
第三步:检查Firebase的基础配置是否正确
- 确认
GoogleService-Info.plist已经正确添加到XCode项目中,并且在Target的Build Phases -> Copy Bundle Resources里能看到这个文件(如果缺失,Firebase初始化会异常,可能触发网络连接错误)。 - 如果你用了
Firebase/Messaging,去Firebase控制台检查APNs证书是否配置正确——Messaging会尝试连接APNs相关服务,证书配置错误可能导致连接被拒绝。 - 查看App的初始化代码,确保Firebase只被初始化一次:在
AppDelegate.m或AppDelegate.swift的didFinishLaunchingWithOptions方法里,只调用一次[FIRApp configure];(RN项目里不要在JS代码里重复初始化)。
第四步:开启Firebase详细日志抓包
要知道Firebase在后台偷偷连了什么地址,开启详细日志是关键:
- 在
AppDelegate中,Firebase初始化代码之前添加以下代码(Objective-C示例):
这样XCode日志会输出Firebase内部的所有网络请求细节,你能看到它尝试连接的具体域名和端口,用[FIRConfiguration sharedInstance].logLevel = FIRLoggerLevelVerbose;curl命令测试这些地址是否能正常访问。 - 同时打开XCode的Network Inspector(Debug Navigator里选择Network),捕获App运行时的所有网络请求,看是否有失败的请求和日志里的错误对应。
第五步:排查环境和系统级问题
- 检查你的测试设备/模拟器是否在代理网络下,某些代理会阻止Firebase的服务连接,尝试关闭代理后再测试。
- 切换网络环境(比如从WiFi切到蜂窝数据),排除是当前网络的防火墙限制了连接。
- 重置模拟器(
Simulator -> Reset Content and Settings)或者重启真机,清除设备的网络缓存,有时候缓存会导致异常连接请求。
第六步:查Firebase官方已知问题
你可以去Firebase iOS SDK的代码仓库搜索类似SO_ERROR 61或nw_connection_get_connected_socket的错误,看看是否有其他开发者碰到过相同问题,很多时候这类日志问题是特定版本的已知bug,已经在新版本中修复。
如果以上步骤都没解决,还可以尝试完全移除所有Firebase Pods,然后重新安装最新稳定版,再测试是否还会出现错误。
内容的提问来源于stack exchange,提问作者Karolis
相关产品推荐
相关产品推荐

