是否可以在iOS模拟器中禁用网络?

时间:2011-01-26 18:30:54

标签: iphone debugging ios ios-simulator

我正在尝试调试我在应用程序中看到的一些不一致的行为,该应用程序从Internet获取其主要数据。我没有在设备上看到模拟器中的问题,所以我想在模拟器中重现网络和连接环境。

有没有办法在模拟器中禁用网络?

(我正在远程连接到Mac代码,现在别无选择,所以禁用OS网络不是一种选择。)

20 个答案:

答案 0 :(得分:1548)

使用简单的Faraday cage来阻止或限制外部RF信号电平。

您可以使用铝箔制作自己的产品。如果您要阻止,则开口应小于数据服务的wavelength

800 Mhz波长为37厘米(14“), 1900 Mhz的波长为16厘米(6英寸)。

使用实际设备比使用模拟器效果更好,因为在法拉第笼内部Mac很难处理; - )

enter image description here

答案 1 :(得分:257)

是。在Xcode中,您可以转到Xcode菜单项 - > Open Developer Tools - > More Developer Tools并下载“Additional Tools for Xcode”,其中包含网络链接调节器。

使用此工具,您可以模拟不同的网络方案(例如100%丢失,3G,高延迟DNS等),您也可以创建自己的自定义网络方案。

答案 2 :(得分:237)

我不敢 - 模拟器共享操作系统正在使用的任何网络连接。我提交了Radar bug report关于模拟网络状况的消息;你可能会考虑这样做。

答案 3 :(得分:46)

我知道在iOS模拟器上禁用网络的唯一方法是使用Little SnitchHands Off等工具。通过它们,您可以拒绝/阻止任何外出和进入的网络连接。您可以对其进行设置,使其仅阻止来自模拟器应用程序的连接。像防火墙一样工作。

答案 4 :(得分:15)

只需关闭Mac OSX中的WiFi即可享受此待遇!

答案 5 :(得分:13)

下载Additional tools package(网络链接调节器)

Description

Sierra的例子: enter image description here

enter image description here

答案 6 :(得分:11)

只需更新当前日期的答案。从Xcode 4(?)开始,/Applications/Utilities中有一个名为Network Link Conditioner的首选项窗格。您可以使用其中一个现有的配置文件,也可以使用0 Kbps的上/下行链接创建自己的自定义配置文件,然后100%删除。

答案 7 :(得分:9)

由于Xcode不提供此类功能,您肯定会使用某些第三方应用程序/工具。 关闭MAC网络也有助于关闭iOS模拟器网络。

您可以通过&#34; <div class="half left"></div> <div class="half right"></div> .half { width: 200px; /* half of your image width */ height: 400px; /* your image height */ } .left { background: url('path/to/your/image.png') top left no-repeat; } .right { background: url('path/to/your/image.png') top right no-repeat; } &#34;关闭您的MAC互联网&GT; &#34; function lsmi_geoip_update() { $dir = dirname( __FILE__ ); $localfilev4 = $dir . '/data/GeoIPv4.dat'; $localfilev6 = $dir . '/data/GeoIPv6.dat'; if ( file_exists( $localfilev4 ) ) { rename($dir . '/data/GeoIPv4.dat', $dir . '/data/OLD_GeoIPv4.dat'); $newfilev4 = file_get_contents('http://gdriv.es/geoipupdate/GeoIPv4.dat'); file_put_contents($dir . '/data/GeoIPv4.dat', $newfilev4); // unlink($dir . '/data/OLD_GeoIPv4.dat'); } if ( file_exists( $localfilev6 ) ) { rename($dir . '/data/GeoIPv6.dat', $dir . '/data/OLD_GeoIPv6.dat'); $newfilev6 = file_get_contents('http://gdriv.es/geoipupdate/GeoIPv6.dat'); file_put_contents($dir . '/data/GeoIPv6.dat', $newfilev6); // unlink($dir . '/data/OLD_GeoIPv6.dat'); } } &#34;并关闭所需的网络资源。

关闭MAC以太网互联网来源 EtherNet Network Source

要关闭MAC WiFi互联网源(如果您的MAC在Wifi Internet上): enter image description here

答案 8 :(得分:6)

您可以使用第三方应用程序限制互联网连接,例如

查尔斯:http://www.charlesproxy.com/

在Mac上点击命令+ shift + T来设置限制。

答案 9 :(得分:6)

一个可能是疯狂的想法或补丁:

只需切换网络可访问性标志

这是我用来通过触发来切换标志运行时的代码 '模拟器内存​​警告'及其完全安全,只需确保代码只能在 DEBUG模式

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application 
{
#ifdef DEBUG
    isInternetAvailable = !isInternetAvailable;
#endif 
}

答案 10 :(得分:4)

我建议您在Mac上使用Charles Proxy应用

它允许您使用仅为调整网络连接而创建的Bandwidth Throttle功能

星形/停止节流⌘命令 + T
油门设置... ⌘命令 + T + ⇧shift

*如果您通过Add Preset创建自己的预设(带宽0和0用于下载和上传),则无法模拟没有Internet连接。另外,仅对某些特定主机启用它也是非常有用的

作为替代方案,您可以在Mac上禁用连接,因为来自Simulator的所有流量都被认为是您的计算机

答案 11 :(得分:3)

您可以使用Little Snitch切断任何单个进程的网络流量,包括在iOS模拟器上运行的进程。这样您就可以保持互联网连接并断开正在运行的应用程序。

答案 12 :(得分:3)

使用Xcode 8.3和iOS 10.3:

XCUIDevice.shared().siriService.activate(voiceRecognitionText: "Turn off wifi")
XCUIDevice.shared().press(XCUIDeviceButton.home)

请务必在测试套件文件的顶部添加@available(iOS 10.3, *)

如果您愿意,也可以选择“打开飞行模式”。

一旦Siri关闭wifi或启用飞行模式,您将需要忽略Siri对话,该对话说Siri需要互联网。这可以通过按下主页按钮来完成,该按钮会取消对话并返回到您的应用程序。

答案 13 :(得分:2)

您可以使用OHHTTPStubs并将对特定网址的网络请求存根失败。

答案 14 :(得分:1)

禁用 IOS Simulator Internet有两种方法:

  • 拔下网络连接
  • 关闭WLAN

这是最简单的方法

答案 15 :(得分:1)

如果您的应用程序正在连接到特定域,则只需将其添加到/etc/hosts文件中,然后将其路由到本地网络中不存在的IP ...对于该应用程序,它将是相同的好像没有互联网连接或服务器无法访问。

sudo nano /etc/hosts

添加以下行:

192.168.1.123   example.com

或如果您不在本地计算机上运行网络服务器,则使用127.0.0.1

答案 16 :(得分:1)

您可以禁用主机网络!

答案 17 :(得分:0)

您可以在Mac上使用网络链接修复程序。您可以从Apple开发者网站下载它。它应该在我们获得旧版Xcode和iOS的地方可用。使用这种网络调节器,您可以将网络的强度从wifi更改为无网络。

此外,当您安装网络调节器时,它将安装在系统首选项中。

答案 18 :(得分:0)

如果你有至少2个wifi网络连接是一个非常简单的方法是使用iOS模拟器中的错误:

  1. 从模拟器(cmd-q)退出​​(如果已打开)
  2. 将您的Mac连接到一个wifi(可能没有连接到互联网,没关系)
  3. 启动模拟器(菜单:xCode-&gt;打开开发人员工具 - &gt; iOs模拟器)并在加载时等待
  4. 将wifi网络切换到另一个
  5. 利润
  6. 错误是模拟器试图使用尚未连接的网络(IP?)。

    直到你重新启动模拟器 - 它将没有互联网(即使你连接的第一个wifi网络有互联网连接),所以你可以运行(cmd-R)和停止(cmd-。)项目使用模拟器没有连接,但你的Mac将被连接。

    然后,如果您需要运行模拟器连接 - 只需退出并启动它。

答案 19 :(得分:0)

一个简单的解决方案是为Mac创建飞行模式。 这是执行此操作的方法:

  • 在“系统偏好设置”中进入“网络”
  • 点击“位置”下拉菜单
  • 单击加号图标以添加新位置
  • 将新位置命名为“飞行模式”或类似名称,然后单击“完成”
  • 从“位置”下拉菜单中选择刚创建的位置
  • 依次在窗口左侧的列表中单击每个可用的网络接口,以禁用每个
  • 单击“配置iPv4”菜单,然后选择“关闭”
  • 对于Wi-Fi,只需单击“关闭Wi-Fi”按钮
  • 点击“应用”,该位置将阻止所有网络活动

要重新打开网络,只需从“位置”下拉菜单中选择“自动”,然后单击“应用”