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

React-Native应用离线/在线测试:Network Link Conditioner调试断连问题

解决方案

方案1:用Xcode内置的App专属网络模拟(最推荐)

系统级的Network Link Conditioner会切断所有网络连接,包括Xcode和设备的调试通道。改用Xcode针对单个App的网络限制,只会影响你的React Native应用,不会断调试连接:

  • 打开Xcode,启动调试后切换到「Debug Navigator」(左侧导航栏的小虫子图标)
  • 选择「Network」标签,左下角找到「Configure」按钮(齿轮图标)
  • 在弹出的配置列表里选「100% Loss」,或者自己新建一个丢包100%的配置
  • 启动这个配置后,只有当前调试的App会被断网,Xcode的调试连接完全不受影响

方案2:通过DevMenu手动切换网络拦截(无热重载)

不想改代码触发热重载的话,可以把网络控制逻辑挂到React Native的DevMenu里,手动开关离线状态:

  1. 安装@react-native-community/netinfo监听网络状态,同时写一个请求拦截器(比如重写fetch或者用Axios拦截器)
  2. 在App入口文件注册DevMenu自定义选项:
import { DevSettings } from 'react-native';

if (__DEV__) {
  DevSettings.addMenuItem('Toggle Offline Mode', () => {
    global.isOffline = !global.isOffline;
    // 这里同步切换请求拦截器状态:开启时让所有请求返回离线失败
    console.log(`Offline mode ${global.isOffline ? 'enabled' : 'disabled'}`);
  });
}
  1. 调试时摇设备打开DevMenu,点击你添加的「Toggle Offline Mode」选项,就能随时切换离线状态,完全不会触发热重载

方案3:用Charles代理做App专属网络限制

如果习惯用代理工具,Charles可以针对单个App设置网络规则:

  • 打开Charles,将设备代理指向Charles
  • 在Charles中找到你的React Native App的请求,右键选择「Throttle Settings」
  • 勾选「Enable Throttling」,把「Loss Percentage」设为100%
  • 这样只有该App的请求会被丢包,Xcode的调试连接走USB或本地网络,不受代理限制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 17:34:52