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

问题描述 投票:373回答:18

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

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

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

iphone debugging ios ios-simulator
18个回答
246
投票

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


6
投票

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

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

这是我通过触发“模拟器内存​​警告”及其完全安全来切换标志运行时的代码,只需确保代码只能处于DEBUG模式

System Preferences...

3
投票

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


3
投票

使用Xcode 8.3和iOS 10.3:

EtherNet Network Source

请务必在测试套件文件的顶部包含enter image description here

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

一旦Siri关闭wifi或打开飞行模式,您将需要忽略Siri对话,该对话说Siri需要互联网。这可以通过按下主页按钮来完成,该按钮会取消对话并返回到您的应用程序。


2
投票

您可以使用http://www.charlesproxy.com/并将对特定URL的网络请求存根失败。


2
投票

有两种方法可以禁用IOS模拟器互联网:

  • 拔下网络连接
  • Torne和VF

这是最简单的方法


2
投票

如果您的应用程序连接到特定域,您只需将其添加到- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application { #ifdef DEBUG isInternetAvailable = !isInternetAvailable; #endif } 文件并将其路由到本地网络中的不存在的IP ...对于应用程序,它将与没有Internet连接时相同或服务器无法访问。

Little Snitch

添加以下行:

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

如果您没有在本地计算机上运行Web服务器,请使用@available(iOS 10.3, *)


1
投票

你可以禁用主机的网络!


0
投票

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

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

问题是模拟器试图使用尚未连接的网络(IP?)。

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

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


0
投票

您可以在Mac上使用网络链接调节器。您可以从Apple开发者网站下载它。它应该在我们获得旧版Xcode和iOS的地方可用。使用这种网络调节器,您可以将网络的强度从wifi更改为无网络。

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


0
投票

一个简单的解决方案是为Mac创建一个飞行模式。以下是如何执行此操作:

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

如果要重新打开网络,只需从“位置”下拉菜单中选择“自动”,然后单击“应用”


1576
投票

使用简单的Faraday cage来阻止或限制外部RF信号电平。

你可以用铝箔制作自己的。如果这是您要阻止的,那么开口应小于数据服务的wavelength

800Mhz具有37cm(14“)波长,1900Mhz具有16cm(6”)波长。

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


269
投票

是。在Xcode中,您可以访问qazxsw poi菜单项 - > qazxsw poi - > qazxsw poi并下载“Xcode”,它将具有网络链接调节器。

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


46
投票

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


15
投票

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


13
投票

下载Additional Tools for Xcode(网络链接调节器)

Little Snitch

塞拉利昂的例子:Hands Off

Additional tools package


11
投票

只需更新当前日期的答案。从Xcode 4(?)开始,Description中有一个名为enter image description here的首选项窗格。您可以使用其中一个现有的配置文件,也可以创建自己的自定义配置文件,其中0 Kbps向上/向下链接和100%删除。


9
投票

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

您可以从“enter image description here”>“/Applications/Utilities”关闭您的MAC互联网并关闭所需的网络资源。

要关闭MAC以太网上网源:qazxsw poi

要关闭你的MAC WiFi上网源(如果你的MAC在Wifi上网):qazxsw poi


6
投票

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

查尔斯:Network Link Conditioner

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

© www.soinside.com 2019 - 2024. All rights reserved.