Можно ли отключить сеть в симуляторе iOS?
Я пытаюсь отладить некоторое непоследовательное поведение, которое я вижу в приложении, которое получает свои основные данные из интернета. Я не вижу проблем в симуляторе, только на устройстве, поэтому я хотел бы воспроизвести среду сети и подключения в симуляторе.
есть ли способ отключить сеть в симуляторе?
(я подключаюсь к Mac удаленно для кода, сейчас нет другого выбора, поэтому отключение сети ОС не является опцион.)
17 ответов:
боюсь, что нет-симулятор разделяет любое сетевое соединение, которое использует ОС. Я подал заявление сообщение об ошибке радара о моделировании сетевых условий некоторое время назад; вы могли бы рассмотреть возможность сделать то же самое.
использовать простой клетка Фарадея для блокировки или ограничения уровня внешнего радиочастотного сигнала.
вы можете сделать свой собственный с алюминиевой фольгой. Отверстия должны быть меньше, чем волны службы данных если это то, что вы хотите заблокировать.
800 МГц имеет длину волны 37 см (14") , 1900 МГц имеет длину волны 16 см (6").
Это работает лучше с реальным устройством, чем с симулятором, так как Mac трудно работать, когда внутри клетки Фарадея ;-)
Да. В Xcode вы можете перейти к
Xcode
пункт - > менюOpen Developer Tools
->More Developer Tools
скачать "дополнительные инструменты для Xcode", который будет иметь кондиционер сетевого соединения.используя этот инструмент, вы можете моделировать различные сетевые сценарии (такие как 100% потеря, 3G, DNS с высокой задержкой и т. д.), а также создавать свои собственные пользовательские сценарии.
единственный способ отключить сеть на симуляторе iOS, который я знаю, - это использовать такие инструменты, как Крысеныш или Руки. С их помощью вы можете запретить/заблокировать любые исходящие и входящие сетевые подключения. Вы можете настроить его так, что он блокирует только соединения из приложения симулятора. Работает как брандмауэр.
просто обновите ответ на текущую дату. Начиная С Xcode 4 (?) есть панель настроек в
/Applications/Utilities
под названиемNetwork Link Conditioner
. Либо вы используете один из существующих профилей, либо создаете свой собственный профиль с 0 Kbps Up/Downlink и 100% dropped.
скачать пакет дополнительных инструментов (Кондиционер Сетевого Соединения)
поскольку Xcode не предоставляет такую функцию, вы определенно пойдете на какое-то стороннее приложение/ инструмент. Отключение сети MAC также поможет отключить сеть iOS Simulator.
вы можете отключить ваш MAC интернет от "
System Preferences...
" >"Network
" и выключите источник сети желания.чтобы отключить вас MAC Ethernet интернет-источник:
чтобы отключить вас MAC WiFi интернет-Источник(Если ваш MAC находится на Wi-Fi Интернет):
вы можете дросселировать подключение к интернету с помощью стороннего приложения, такого как
Чарльз:http://www.charlesproxy.com/
нажмите command + shift + T на Mac, чтобы настроить дросселирование.
одна, вероятно, сумасшедшая идея или патч:
просто переключите флаг достижимости сети
Это код, который я использую для переключения моего флага выполнения путем запуска 'Симулятор Памяти Предупреждение' и его полностью безопасно, просто убедитесь, что код должен быть в режим отладки только
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application { #ifdef DEBUG isInternetAvailable = !isInternetAvailable; #endif }
можно использовать Крысеныш чтобы отключить сетевой трафик для любого отдельного процесса, включая те, которые работают на симуляторе iOS. Таким образом, вы можете сохранить подключение к интернету и отключить запущенное приложение.
С 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 требует интернет. Это достигается нажатием кнопки home, которая закрывает диалог и возвращается в ваше приложение.
вы могли бы использовать OHHTTPStubs и заглушить сетевые запросы к определенным URL-адресам для сбоя.
Если у вас есть по крайней мере 2 wifi сети для подключения это очень простой способ, чтобы использовать ошибку в iOS simulator:
- выйти из симулятора (cmd-q), если он открыт
- подключите ваш Mac к одному wifi (он может быть не подключен к интернету, не имеет значения)
- запустите симулятор (меню: xCode - > Open Developer Tool - >iOS Simulator) и подождите, пока он будет загружен
- переключатель беспроводной сети для других один
- прибыль
ошибка в том, что симулятор пытается использовать сеть (IP?) который уже не подключен.
пока вы не перезапустили симулятор - у него не будет интернета (даже если эта первая сеть wifi, которую вы подключили, имела подключение к интернету), поэтому вы можете запустить (cmd-R) и остановить (cmd-.) проект(ы) использовать тренажер без подключения, но ваш Mac будет подключен.
затем, если вам нужно запустить симулятор подключен - просто выйти и запустить оно.
вы можете использовать кондиционер network link на вашем Mac. Вы можете скачать его с веб-сайта разработчика apple. Он должен быть доступен там, где мы получаем более старые версии Xcode и iOS. С помощью этого сетевого кондиционера вы можете изменить силу сети от wifi до No network.
также при установке сетевого кондиционера он устанавливается в Системных настройках.