我正在尝试调试我在应用程序中看到的一些不一致的行为,该应用程序从Internet获取其主要数据。我没有在设备上看到模拟器中的问题,所以我想在模拟器中重现网络和连接环境。
有没有办法在模拟器中禁用网络?
(我正在远程连接到Mac代码,现在别无选择,所以禁用OS网络不是一种选择。)
答案 0 :(得分:1548)
使用简单的Faraday cage来阻止或限制外部RF信号电平。
您可以使用铝箔制作自己的产品。如果您要阻止,则开口应小于数据服务的wavelength。
800 Mhz波长为37厘米(14“), 1900 Mhz的波长为16厘米(6英寸)。
使用实际设备比使用模拟器效果更好,因为在法拉第笼内部Mac很难处理; - )
答案 1 :(得分:257)
是。在Xcode中,您可以转到Xcode
菜单项 - > Open Developer Tools
- > More Developer Tools
并下载“Additional Tools for Xcode”,其中包含网络链接调节器。
使用此工具,您可以模拟不同的网络方案(例如100%丢失,3G,高延迟DNS等),您也可以创建自己的自定义网络方案。
答案 2 :(得分:237)
我不敢 - 模拟器共享操作系统正在使用的任何网络连接。我提交了Radar bug report关于模拟网络状况的消息;你可能会考虑这样做。
答案 3 :(得分:46)
我知道在iOS模拟器上禁用网络的唯一方法是使用Little Snitch或Hands Off等工具。通过它们,您可以拒绝/阻止任何外出和进入的网络连接。您可以对其进行设置,使其仅阻止来自模拟器应用程序的连接。像防火墙一样工作。
答案 4 :(得分:15)
只需关闭Mac OSX中的WiFi即可享受此待遇!
答案 5 :(得分:13)
答案 6 :(得分:11)
只需更新当前日期的答案。从Xcode 4(?)开始,/Applications/Utilities
中有一个名为Network Link Conditioner
的首选项窗格。您可以使用其中一个现有的配置文件,也可以使用0 Kbps的上/下行链接创建自己的自定义配置文件,然后100%删除。
答案 7 :(得分:9)
由于Xcode不提供此类功能,您肯定会使用某些第三方应用程序/工具。 关闭MAC网络也有助于关闭iOS模拟器网络。
您可以通过&#34; <div class="half left"></div>
<div class="half right"></div>
.half {
width: 200px; /* half of your image width */
height: 400px; /* your image height */
}
.left {
background: url('path/to/your/image.png') top left no-repeat;
}
.right {
background: url('path/to/your/image.png') top right no-repeat;
}
&#34;关闭您的MAC互联网&GT; &#34; function lsmi_geoip_update() {
$dir = dirname( __FILE__ );
$localfilev4 = $dir . '/data/GeoIPv4.dat';
$localfilev6 = $dir . '/data/GeoIPv6.dat';
if ( file_exists( $localfilev4 ) ) {
rename($dir . '/data/GeoIPv4.dat', $dir . '/data/OLD_GeoIPv4.dat');
$newfilev4 = file_get_contents('http://gdriv.es/geoipupdate/GeoIPv4.dat');
file_put_contents($dir . '/data/GeoIPv4.dat', $newfilev4);
// unlink($dir . '/data/OLD_GeoIPv4.dat');
}
if ( file_exists( $localfilev6 ) ) {
rename($dir . '/data/GeoIPv6.dat', $dir . '/data/OLD_GeoIPv6.dat');
$newfilev6 = file_get_contents('http://gdriv.es/geoipupdate/GeoIPv6.dat');
file_put_contents($dir . '/data/GeoIPv6.dat', $newfilev6);
// unlink($dir . '/data/OLD_GeoIPv6.dat');
}
}
&#34;并关闭所需的网络资源。
答案 8 :(得分:6)
答案 9 :(得分:6)
一个可能是疯狂的想法或补丁:
只需切换网络可访问性标志
这是我用来通过触发来切换标志运行时的代码 '模拟器内存警告'及其完全安全,只需确保代码只能在 DEBUG模式
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
{
#ifdef DEBUG
isInternetAvailable = !isInternetAvailable;
#endif
}
答案 10 :(得分:4)
我建议您在Mac上使用Charles Proxy应用
它允许您使用仅为调整网络连接而创建的Bandwidth Throttle
功能
星形/停止节流⌘命令 + T
油门设置... ⌘命令 + T + ⇧shift
*如果您通过Add Preset
创建自己的预设(带宽0和0用于下载和上传),则无法模拟没有Internet连接。另外,仅对某些特定主机启用它也是非常有用的
作为替代方案,您可以在Mac上禁用连接,因为来自Simulator的所有流量都被认为是您的计算机
答案 11 :(得分:3)
您可以使用Little Snitch切断任何单个进程的网络流量,包括在iOS模拟器上运行的进程。这样您就可以保持互联网连接并断开正在运行的应用程序。
答案 12 :(得分:3)
使用Xcode 8.3和iOS 10.3:
XCUIDevice.shared().siriService.activate(voiceRecognitionText: "Turn off wifi")
XCUIDevice.shared().press(XCUIDeviceButton.home)
请务必在测试套件文件的顶部添加@available(iOS 10.3, *)
。
如果您愿意,也可以选择“打开飞行模式”。
一旦Siri关闭wifi或启用飞行模式,您将需要忽略Siri对话,该对话说Siri需要互联网。这可以通过按下主页按钮来完成,该按钮会取消对话并返回到您的应用程序。
答案 13 :(得分:2)
您可以使用OHHTTPStubs并将对特定网址的网络请求存根失败。
答案 14 :(得分:1)
禁用 IOS Simulator Internet有两种方法:
这是最简单的方法
答案 15 :(得分:1)
如果您的应用程序正在连接到特定域,则只需将其添加到/etc/hosts
文件中,然后将其路由到本地网络中不存在的IP ...对于该应用程序,它将是相同的好像没有互联网连接或服务器无法访问。
sudo nano /etc/hosts
添加以下行:
192.168.1.123 example.com
或如果您不在本地计算机上运行网络服务器,则使用127.0.0.1
。
答案 16 :(得分:1)
您可以禁用主机网络!
答案 17 :(得分:0)
您可以在Mac上使用网络链接修复程序。您可以从Apple开发者网站下载它。它应该在我们获得旧版Xcode和iOS的地方可用。使用这种网络调节器,您可以将网络的强度从wifi更改为无网络。
此外,当您安装网络调节器时,它将安装在系统首选项中。
答案 18 :(得分:0)
如果你有至少2个wifi网络连接是一个非常简单的方法是使用iOS模拟器中的错误:
错误是模拟器试图使用尚未连接的网络(IP?)。
直到你重新启动模拟器 - 它将没有互联网(即使你连接的第一个wifi网络有互联网连接),所以你可以运行(cmd-R)和停止(cmd-。)项目使用模拟器没有连接,但你的Mac将被连接。
然后,如果您需要运行模拟器连接 - 只需退出并启动它。
答案 19 :(得分:0)
一个简单的解决方案是为Mac创建飞行模式。 这是执行此操作的方法:
要重新打开网络,只需从“位置”下拉菜单中选择“自动”,然后单击“应用”