是否有可能在iOS模拟器禁用networking?

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

有什么方法可以在模拟器中禁用networking吗?

(我正在远程连接到Mac代码,现在没有其他select,所以禁用操作系统networking不是一个选项)。

恐怕不是 – 模拟器共享操作系统正在使用的任何networking连接。 我提交了一个有关模拟networking状况的雷达错误报告 , 你可能会考虑做同样的事情。

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

你可以用铝箔做你自己的。 如果这是您想要阻止的,那么这些开口应该小于数据服务的波长 。

800兆赫具有37厘米(14“)的波长,1900兆赫具有16厘米(6”)的波长。

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

在这里输入图像说明

是。 在Xcode中,你可以去Xcode菜单项 – > Open Developer Tools – > More Developer Tools然后下载“ Xcode的硬件IO工具 ”,它将有networking链接调节器。

使用这个工具,你可以模拟不同的networking场景(比如100%的丢失,3G,高延迟的DNS等等),你也可以创build你自己的定制的。

在iOS模拟器上禁用networking的唯一方法就是使用像Little Snitch或Hands Off这样的工具。 有了它们,您可以拒绝/阻止任何外出和进入的networking连接。 您可以将其设置为仅阻止来自模拟器应用程序的连接。 像防火墙一样工作。

只需在Mac OSX上closures你的WiFi,这是一个享受!

只是更新当前date的答案。 由于Xcode 4(?)在/Applications/Utilities有一个名为Network Link Conditioner的偏好设置窗格。 您可以使用其中一个已存在的configuration文件,也可以使用0 Kbps的上行/下行链路和100%的丢弃率创build您自己的自定义configuration文件。

由于Xcode不提供这种function,你一定会去一些第三方的应用程序/工具。 closuresMACnetworking也将有助于closuresiOS模拟器networking。

您可以从“ System Preferences... ”>“ Network ”中closures您的MACnetworking,并closures所需的networking源。

要closures你的MAC以太网上网源: EtherNet网络资源

要closures你的MAC WiFi互联网源(如果你的MAC在无线上网): 在这里输入图像说明

下载其他工具包 (Network Link Conditioner)

描述

Sierra的例子: 在这里输入图像说明

在这里输入图像说明

您可以通过第三方应用程序来阻止互联网连接,例如

Charles: http : //www.charlesproxy.com/

在Mac上按命令+ shift + T设置节stream。

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

只需切换networking可达性的标志

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

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

您可以使用OHHTTPStubs并将networking请求存储到特定的URL以使其失败。

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

您可以禁用主机的networking!

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

  1. 退出模拟器(cmd-q),如果它是打开的
  2. 连接你的Mac到一个WiFi(它可能没有连接到互联网,没关系)
  3. 启动模拟器(菜单:xCode-> Open Developer Tool-> iOs Simulator)并等待加载
  4. 将wifinetworking切换到其他networking
  5. 利润

错误在于模拟器尝试使用尚未连接的networking(IP?)。

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

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

您可以在Mac上使用networking链路调节器。 你可以从苹果开发者网站下载。 它应该在我们获得旧版本的Xcode和iOS的地方。 有了这个networking调节器,您可以将networking的强度从无线networking改变为无networking。

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

使用Xcode 8.3和iOS 10.3:

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

确保在testing套件文件的顶部包含@available(iOS 10.3, *)

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

一旦Siriclosureswifi或打开飞行模式,您将需要closuresSiri对话,说Siri需要互联网。 这是通过按主页button来完成的,这会closures对话并返回到您的应用程序。

您可以将模拟器设置为飞行模式/飞行模式 在这里输入图像说明