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

Pau*_*ond 402 iphone debugging networking ios ios-simulator

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

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

(我正在远程连接到Mac代码,现在没有其他选择,因此禁用OS网络不是一种选择).

pro*_*rmr 1639

使用简单的法拉第笼来阻止或限制外部RF信号电平.

你可以用铝箔制作自己的.如果您要阻止,则开口应小于数据服务的波长.

800Mhz具有37cm(14")波长,1900Mhz具有16cm(6")波长.

这对于实际设备而言比使用模拟器更好,因为当在法拉第笼内时Mac很难工作;-)

在此输入图像描述

  • 只是一个快速的建议,如果你创建一个内置桌子的步入式法拉第笼,Mac将更容易使用. (161认同)
  • 即使他要求模拟器,你的答案也很有趣 (76认同)
  • 由于问题是关于模拟器的,我想我会在Photoshop中制作其中一个并将其设置为我的桌面背景.这可能会奏效,对吗? (67认同)
  • 应该被接受为正确答案!(我宁愿使用铅盒用于iKryptonite) (9认同)
  • 这个'技巧'已被专业人士用于真实:)当我在第一代智能手机上工作时,我们常常使用粗壮的饼干罐.并非所有品牌都有效,但那些品牌都很完美. (8认同)
  • 差不多 8 年过去了,仍然是最优雅的解决方案。 (4认同)
  • 现在只需将其放入烤箱即可完成工作 (3认同)
  • 我想我从来没有对 S/O 的回答笑得这么厉害。这太棒了。以一种有趣的方式,它确实有效。 (3认同)
  • 法拉第笼可以与WiFi路由器一起使用(: (2认同)

swa*_*uri 288

是.在Xcode中,您可以转到Xcode菜单项 - > Open Developer Tools- > More Developer Tools并下载" Xcode的附加工具 ",它将具有网络链接调节器.

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

  • 不知何故,我更喜欢将我的设备装在铝箔中. (134认同)
  • 自Xcode 8以来,网络链接调节器位于"[Xcode的附加工具](https://developer.apple.com/download/more/?name=Additional%20Tools%20for%20Xcode)"包中. (14认同)
  • 如果您是开发人员,那么它就在XCODE的HARDWARE IO工具包中. (7认同)
  • 它正在影响所有的mac.我想只为模拟器退出互联网连接,因为我远程使用mac ... (6认同)
  • 此外,100%的损失限制了主机的连接,因此,这不是一个实际的解决方案.如果你准备在没有互联网的情况下进行开发,那么只需拔掉开发者机器上的插头就比这个解决方案更好. (4认同)
  • 这是一个很好的工具,但是不幸的是,我发现使用工具的“ 100%损失”配置文件时,“ SCNetworkReachabilityFlags”包含“ .Reachable”标志;与真正的断开状态相反。 (2认同)
  • 如前所述,这个工具不仅仅允许控制模拟器的连接,它控制整个macos的连接。 (2认同)
  • 这并不能解决测试离线应用程序的问题。它也会影响操作系统的互联网 (2认同)
  • 我无法从链接下载任何铝箔...... (2认同)

Noa*_*oon 260

我不敢 - 模拟器共享操作系统正在使用的任何网络连接.我提交了关于模拟网络状况的Radar错误报告 ; 你可能会考虑做同样的事情.

  • 不确定它是否响应此雷达错误,但开发人员工具现在包括[网络链接调节器](http://mattgemmell.com/2011/07/25/network-link-conditioner-in-lion/)工具. (45认同)
  • 目前,网络链路调节器允许设置100%的数据包丢失,它似乎工作. (11认同)
  • 网络链接调节器允许您指定要丢弃的数据包的百分比,但据我所见,遗憾的是无法禁用所有连接. (7认同)
  • 由于模拟器共享主机的网络连接,因此您可以在主机上关闭互联网以模拟"禁用网络".不理想,但它的工作原理. (4认同)
  • 等待,网络链接调节器适用于整个主机,而不仅仅是模拟器.这有用吗?如果我愿意,我可以拔掉我的以太网. (4认同)

Fel*_*lix 46

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

  • 但这不会使模拟器表现得像你离线.它只会让你的服务器不可用,这是完全不同的事情. (11认同)
  • +1:我已经将Little Snitch用于此目的,测试以确保模拟应用程序在网络连接中断时可以正常工作. (2认同)

ben*_*mer 18

只需在Mac OSX中关闭您的WiFi就可以了!

  • 对明确指出这不是一个选项的OP没有帮助,但这对我来说是一个完美的简单解决方案。 (2认同)
  • 嗯,我想知道它是编辑还是我只是一个懒惰的读者 (2认同)

Nik*_*Kov 15

下载其他工具包(网络链接调节器)

描述

Sierra的例子: 在此输入图像描述

在此输入图像描述

  • 这也限制了主机的连接,所以它最好不要拔掉你的开发者机器上的插件 - 没有协作或互联网参考.所以,不是一个实际的解决方案 (7认同)

小智 11

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

  • BE警告 - NETWORK LINK CONDITIONER工具会影响ENTIRE机器,而不仅仅是iPhone模拟器.如果你远程进入你的mac for dev,就像我使用Xamarin Build Host一样,它会终止你的连接. (4认同)

Ali*_*Ali 10

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

您可以从" System Preferences...">" Network" 关闭MAC互联网并关闭所需的网络源.

要关闭MAC以太网上网源: EtherNet网络源

要关闭MAC WiFi互联网源(如果您的MAC在Wifi Internet上): 在此输入图像描述


yoA*_*ex5 8

iOS 禁用网络

\n

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

\n

它允许您使用专为调整网络连接而创建的带宽限制功能。

\n

开始/停止节流\xe2\x8c\x98 command+ T
\n节流设置... \xe2\x8c\x98 command+ T+\xe2\x87\xa7 shift

\n\n

*如果您通过带宽 0 和 0 用于下载和上传创建自己的预设Add Preset,您可以模拟没有互联网连接。仅为某些特定主机启用它也非常有用。

\n

作为替代方案,您可以禁用 Mac 上的连接,因为来自模拟器的所有流量都通过您的计算机。

\n


mab*_*sif 6

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

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

在Mac上按命令+ shift + T设置限制.


Dar*_*hah 6

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

只需切换网络可达性标志即可

这是代码,我用触发切换自己的旗帜运行 "模拟内存警告"和它完全安全的,只要确保代码应该是在DEBUG模式

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application 
{
#ifdef DEBUG
    isInternetAvailable = !isInternetAvailable;
#endif 
}
Run Code Online (Sandbox Code Playgroud)


Dio*_*ion 6

如果您的应用程序连接到特定域,您只需将其添加到您的/etc/hosts文件并将其路由到本地网络中不存在的 IP 地址...对于应用程序,它将与没有任何 IP 地址相同Internet 连接或无法访问服务器。

sudo nano /etc/hosts
Run Code Online (Sandbox Code Playgroud)

添加以下行:

192.168.1.123   example.com
Run Code Online (Sandbox Code Playgroud)

或者,127.0.0.1如果您没有在本地计算机上运行 Web 服务器,请使用。


Era*_*din 5

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