我正在尝试调试一款从互联网获取主要数据的应用程序,发现其行为不一致。在模拟器中不存在此问题,仅在设备上存在,因此我想在模拟器中复制网络和连接环境。
是否有一种方法可以在模拟器中禁用网络?
(我通过远程连接到Mac进行编码,当前没有其他选择,因此禁用操作系统网络不是一个选项)。
我正在尝试调试一款从互联网获取主要数据的应用程序,发现其行为不一致。在模拟器中不存在此问题,仅在设备上存在,因此我想在模拟器中复制网络和连接环境。
是否有一种方法可以在模拟器中禁用网络?
(我通过远程连接到Mac进行编码,当前没有其他选择,因此禁用操作系统网络不是一个选项)。
一个可能有点疯狂的想法或补丁:
切换网络可达性标志
这是我用来在运行时通过触发“模拟器内存警告”来切换我的标志的代码,它是完全安全的。只需确保代码仅在调试模式下运行。
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
{
#ifdef DEBUG
isInternetAvailable = !isInternetAvailable;
#endif
}
false
是个好主意。无需安装,我可以继续远程工作!谢谢。 - JCarlosRisInternetAvailable
是在哪里定义的?! - CSawyXCUIDevice.shared().siriService.activate(voiceRecognitionText: "Turn off Wi-Fi")
XCUIDevice.shared().press(XCUIDeviceButton.home)
@available(iOS 10.3, *)
。
如果您愿意,也可以选择“打开飞行模式”。
一旦Siri关闭Wi-Fi或打开飞行模式,您需要关闭Siri对话框,该对话框显示Siri需要互联网。这可以通过按Home按钮来完成,这样可以关闭对话框并返回到您的应用程序中。禁用iOS模拟器的网络连接有两种方法:
这是最简单的方法。
你可以在Mac上使用网络链接调节器。你可以从苹果开发者网站下载它。它应该可以在我们获取旧版本的Xcode和iOS的地方找到。通过这个网络调节器,你可以将网络强度从Wi-Fi改变为无网络。
此外,当你安装网络调节器时,它会被安装在系统偏好设置中。
当您想要重新启用网络时,只需从位置下拉菜单中选择自动,然后单击应用即可。
如果你有至少两个Wi-Fi网络需要连接,一种非常简单的方法是使用iOS模拟器中的一个漏洞:
该漏洞在于模拟器尝试使用一个未连接的网络(IP?)。
在重新启动模拟器之前,它将没有互联网连接(即使您连接的第一个Wi-Fi网络已经连接到互联网),因此您可以运行(Cmd + R)和停止(Cmd + .)项目以在没有连接的情况下使用模拟器,但是您的Mac将保持连接状态。
然后,如果您需要运行连接的模拟器 - 只需退出并重新启动它。
pfctl -e
(echo "block all"; pfctl -sr) | pfctl -f -
停止过滤:
pfctl -d
曾经有一个名为Throttle(Mac)的工具,可以通过共享无线网络模拟3G网络。