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

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中的一个,那就用排除法测试:

  1. 先在Podfile里注释掉 pod 'Firebase/Crash',执行 pod install,然后clean XCode的build文件夹(快捷键Cmd+Shift+K),清除模拟器/真机缓存后重新运行,看日志错误是否消失。
  2. 如果错误还在,继续注释掉 pod 'Firebase/Messaging',重复pod install、clean、运行的步骤。
  3. 最后只保留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示例):
    [FIRConfiguration sharedInstance].logLevel = FIRLoggerLevelVerbose;
    
    这样XCode日志会输出Firebase内部的所有网络请求细节,你能看到它尝试连接的具体域名和端口,用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:38:10