我正在尝试调试一款从互联网获取主要数据的应用程序,发现其行为不一致。在模拟器中不存在此问题,仅在设备上存在,因此我想在模拟器中复制网络和连接环境。
是否有一种方法可以在模拟器中禁用网络?
(我通过远程连接到Mac进行编码,当前没有其他选择,因此禁用操作系统网络不是一个选项)。
我正在尝试调试一款从互联网获取主要数据的应用程序,发现其行为不一致。在模拟器中不存在此问题,仅在设备上存在,因此我想在模拟器中复制网络和连接环境。
是否有一种方法可以在模拟器中禁用网络?
(我通过远程连接到Mac进行编码,当前没有其他选择,因此禁用操作系统网络不是一个选项)。
可以。在 Xcode 中,您可以转到菜单 打开开发者工具 → 更多开发者工具 ,并下载“Additional Tools for Xcode”,其中包含了网络链接限制器。
使用此工具,您可以模拟不同的网络情况(例如 100% 丢失、3G、高延迟 DNS 等等),也可以创建自己的自定义场景。
很抱歉,模拟器与操作系统使用的网络连接是共享的。我之前提交过一个关于模拟网络条件的Radar错误报告,你也可以考虑提交一个。
我所了解的禁用iOS模拟器网络的唯一方法是使用工具,例如Little Snitch或Hands Off。通过这些工具,您可以拒绝/阻止任何出站和入站网络连接。
您可以设置它仅阻止来自模拟器应用程序的连接。 它的工作方式类似于防火墙。
只需在 Mac OS X 中关闭 Wi-Fi 即可。这很有效!
自从Xcode 4 (?)以来,在/Applications/Utilities
中有一个名为Network Link Conditioner
的首选项面板。您可以使用现有配置文件之一,或者创建自己的自定义配置文件,其中上下行链路速度为0 kbit/s,且100%数据包丢失。
Network Link Conditioner
是官方的苹果工具,而且完全免费,相比之下Little Snitch
或者Hands Off
就不同了。 - fatuhoku/etc/hosts
文件中,并将其路由到本地网络中不存在的IP地址... 对于应用程序来说,这就像没有任何互联网连接或者服务器无法访问一样。sudo nano /etc/hosts
192.168.1.123 example.com
如果您的本地计算机上没有运行Web服务器,则可以使用127.0.0.1
。
iOS禁用网络
我建议您在Mac上使用Charles Proxy应用程序。
它允许使用专门为调整网络连接而创建的带宽限制功能。
开始/停止限制 ⌘ command + T
限制设置... ⌘ command + T + ⇧ shift
*如果您通过添加预设
创建自己的预设,下载和上传的带宽都设置为0,则可以模拟没有互联网连接。对于仅针对某些特定主机启用它非常有用。
作为替代方案,您可以在Mac上禁用连接,因为模拟器中的所有流量都通过您的计算机。