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

在模拟器中是否有禁用网络的方法?

(我正在远程连接到Mac上编写代码,目前没有其他选择,所以不能禁用操作系统网络)。


当前回答

有两种方法禁用iOS模拟器的互联网连接:

拔掉网络连接 关闭Wi-Fi

这是最简单的方法。

其他回答

是的。在Xcode中,你可以打开“打开开发人员工具→更多开发人员工具”菜单,下载“额外的Xcode工具”,其中有网络链接调节器。

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

您可以禁用主机的网络代替!

如果你的应用程序连接到一个特定的域,你可以简单地将它添加到你的/etc/hosts文件中,并将它路由到本地网络中不存在的IP地址……对于应用程序来说,就像没有任何Internet连接或服务器不可达一样。

sudo nano /etc/hosts

增加如下一行:

192.168.1.123   example.com

如果您在本地机器上没有运行web服务器,则使用127.0.0.1。

你可以使用小飞贼切断任何单独进程的网络流量,包括在iOS模拟器上运行的进程。这样你就可以保持网络连接,并断开正在运行的应用程序。

iOS禁用网络

我建议你使用Mac上的Charles Proxy应用。

它允许您使用仅为调整网络连接而创建的带宽节流功能。

启动/停止节流⌘命令+ T 节流设置…⌘命令+ T + shift

*如果您通过添加带宽为0和0的预设来创建自己的预设用于下载和上传,您可以模拟没有互联网连接。此外,只对某些特定的主机启用它是非常有用的。

作为一种替代方法,你可以禁用Mac上的连接,因为所有来自模拟器的流量都要经过你的计算机。