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

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

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

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

307733 次浏览

恐怕不行——模拟器共享操作系统正在使用的任何网络连接。我之前提交了一份关于模拟网络条件的雷达故障报告;你也可以考虑这么做。

我知道在iOS模拟器上禁用网络的唯一方法是使用小告密者的手之类的工具。有了它们,您可以拒绝/阻止任何传出和传入的网络连接。

你可以设置它,让它只阻止来自模拟器应用程序的连接。它的工作原理就像防火墙一样。

只要在Mac OS x上关掉你的Wi-Fi就行了。

自Xcode 4(?)以来,在/Applications/Utilities中有一个名为Network Link Conditioner的首选项窗格。您可以使用现有的配置文件之一,也可以创建自己的自定义配置文件,使用0 kbit/s的up/downlink和100%的drop。

是的。在Xcode中,你可以在开放开发人员工具更多开发人员工具菜单中下载"Xcode的附加工具",其中会有网络链接调节器。

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

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

你可以用铝箔纸自己制作。如果您想要阻塞的是数据服务的波长,那么开口应该比它小。

  • 800兆赫有一个37厘米(14")波长
  • 1900兆赫有一个16厘米(6")波长。

这在实际设备上比在模拟器上工作得更好,因为Mac在法拉第笼内很难工作;-)

Enter image description here

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

您可以使用第三方应用程序(如查尔斯)限制互联网连接。

在Mac上点击命令 + 转变 + T来设置节流。

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

如果你至少要连接两个Wi-Fi网络,一个很简单的方法是使用iOS模拟器中的一个bug:

  1. 如果模拟器是打开的,退出模拟器(Cmd + )
  2. 将Mac连接到一个Wi-Fi接入点(可能没有连接到互联网,但没关系)
  3. 启动模拟器(菜单:Xcode→开放开发人员工具iOS模拟器),等待加载
  4. 切换Wi-Fi网络到另一个
  5. 利润

这个错误是模拟器试图使用一个尚未连接的网络(IP?)。

直到您重新启动模拟器-它将没有互联网连接(即使您连接的第一个Wi-Fi网络有互联网连接),所以您可以运行(Cmd + R)和停止(Cmd + )项目在没有连接的情况下使用模拟器,但您的Mac将连接。

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

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

你可以在你的Mac上使用网络链接调节器。你可以从苹果开发者网站下载它。它应该可以在旧版本的Xcode和iOS中使用。有了这个网络调节器,你可以改变网络的强度,从Wi-Fi到无网络。

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

由于Xcode没有提供这样的功能,你肯定会去找一些第三方应用程序/工具。 关闭Mac网络也将有助于关闭iOS模拟器网络

你可以从系统设置…网络关闭你的Mac网络连接,并关闭所需的网络源。

关闭你的Mac以太网Internet源: # EYZ0 < / p >

关闭你的Mac Wi-Fi网络源(如果你的Mac有Wi-Fi网络连接): # EYZ0 < / p >

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

只需切换网络可达性标志

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

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

下载附加工具包(网络链接调节器)

# EYZ0

Sierra的例子: # EYZ0 < / p >

enter image description here

在Xcode 8.3和iOS 10.3中:

XCUIDevice.shared().siriService.activate(voiceRecognitionText: "Turn off Wi-Fi")
XCUIDevice.shared().press(XCUIDeviceButton.home)

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

你也可以选择“打开飞机模式”;如果你愿意的话。

一旦Siri关闭Wi-Fi或打开“飞行模式”,你将需要关闭Siri需要上网的对话框。这是通过按home键来完成的,这将取消对话并返回到应用程序。

两个方式禁用 iOS模拟器的互联网连接:

  • 拔掉网络连接
  • 关闭Wi-Fi

这是最简单的方法。

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

sudo nano /etc/hosts

增加如下一行:

192.168.1.123   example.com

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

一个简单的解决方案是为你的Mac创建一个飞行模式。 下面是如何做到这一点:

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

当您想重新启动网络时,只需从“位置”下拉菜单中选择“自动”,然后单击“应用”

iOS禁用网络

我建议你在Mac上使用查尔斯代理应用程序。

它允许您使用带宽节流特性,该特性是为调整网络连接而创建的。

启动/停止节流⌘命令 + T
. 节流设置…⌘命令 + T + ⇧转变

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

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

如果你需要破坏你的网络连接是不同的方式,看看这些utils:

Ipfw或PFCTL (FreeBSD/OSX) -低级包过滤器。拒绝从本地主机访问端口的示例 要关闭网络,可以在终端执行:

pfctl -e
(echo "block all"; pfctl -sr) | pfctl -f -

停止过滤:

pfctl -d

曾经有节气门 (Mac)通过共享无线网络模拟3G网络。