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

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

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


当前回答

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

只需切换网络可达性标志

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

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

其他回答

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

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

在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键来完成的,这将取消对话并返回到应用程序。

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

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

关闭你的Mac以太网Internet源:

关闭你的Mac Wi-Fi网络源(如果你的Mac有Wi-Fi网络连接):

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

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