Можно ли отключить сеть в симуляторе iOS?


Я пытаюсь отладить некоторое непоследовательное поведение, которое я вижу в приложении, которое получает свои основные данные из интернета. Я не вижу проблем в симуляторе, только на устройстве, поэтому я хотел бы воспроизвести среду сети и подключения в симуляторе.

есть ли способ отключить сеть в симуляторе?

(я подключаюсь к Mac удаленно для кода, сейчас нет другого выбора, поэтому отключение сети ОС не является опцион.)

17 334

17 ответов:

боюсь, что нет-симулятор разделяет любое сетевое соединение, которое использует ОС. Я подал заявление сообщение об ошибке радара о моделировании сетевых условий некоторое время назад; вы могли бы рассмотреть возможность сделать то же самое.

использовать простой клетка Фарадея для блокировки или ограничения уровня внешнего радиочастотного сигнала.

вы можете сделать свой собственный с алюминиевой фольгой. Отверстия должны быть меньше, чем волны службы данных если это то, что вы хотите заблокировать.

800 МГц имеет длину волны 37 см (14") , 1900 МГц имеет длину волны 16 см (6").

Это работает лучше с реальным устройством, чем с симулятором, так как Mac трудно работать, когда внутри клетки Фарадея ;-)

enter image description here

Да. В Xcode вы можете перейти к Xcode пункт - > меню Open Developer Tools ->More Developer Tools скачать "дополнительные инструменты для Xcode", который будет иметь кондиционер сетевого соединения.

используя этот инструмент, вы можете моделировать различные сетевые сценарии (такие как 100% потеря, 3G, DNS с высокой задержкой и т. д.), а также создавать свои собственные пользовательские сценарии.

единственный способ отключить сеть на симуляторе iOS, который я знаю, - это использовать такие инструменты, как Крысеныш или Руки. С их помощью вы можете запретить/заблокировать любые исходящие и входящие сетевые подключения. Вы можете настроить его так, что он блокирует только соединения из приложения симулятора. Работает как брандмауэр.

просто выключите WiFi в Mac OSX это работает удовольствие!

просто обновите ответ на текущую дату. Начиная С Xcode 4 (?) есть панель настроек в /Applications/Utilities под названием Network Link Conditioner. Либо вы используете один из существующих профилей, либо создаете свой собственный профиль с 0 Kbps Up/Downlink и 100% dropped.

скачать пакет дополнительных инструментов (Кондиционер Сетевого Соединения)

описание

пример в Сьерра: enter image description here

enter image description here

поскольку Xcode не предоставляет такую функцию, вы определенно пойдете на какое-то стороннее приложение/ инструмент. Отключение сети MAC также поможет отключить сеть iOS Simulator.

вы можете отключить ваш MAC интернет от "System Preferences..." >"Network " и выключите источник сети желания.

чтобы отключить вас MAC Ethernet интернет-источник: EtherNet Network Source

чтобы отключить вас MAC WiFi интернет-Источник(Если ваш MAC находится на Wi-Fi Интернет): enter image description here

вы можете дросселировать подключение к интернету с помощью стороннего приложения, такого как

Чарльз: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:

  1. выйти из симулятора (cmd-q), если он открыт
  2. подключите ваш Mac к одному wifi (он может быть не подключен к интернету, не имеет значения)
  3. запустите симулятор (меню: xCode - > Open Developer Tool - >iOS Simulator) и подождите, пока он будет загружен
  4. переключатель беспроводной сети для других один
  5. прибыль

ошибка в том, что симулятор пытается использовать сеть (IP?) который уже не подключен.

пока вы не перезапустили симулятор - у него не будет интернета (даже если эта первая сеть wifi, которую вы подключили, имела подключение к интернету), поэтому вы можете запустить (cmd-R) и остановить (cmd-.) проект(ы) использовать тренажер без подключения, но ваш Mac будет подключен.

затем, если вам нужно запустить симулятор подключен - просто выйти и запустить оно.

вы можете использовать кондиционер network link на вашем Mac. Вы можете скачать его с веб-сайта разработчика apple. Он должен быть доступен там, где мы получаем более старые версии Xcode и iOS. С помощью этого сетевого кондиционера вы можете изменить силу сети от wifi до No network.

также при установке сетевого кондиционера он устанавливается в Системных настройках.

здесь два способ отключить iOS симулятор сети:

  • отключите сетевое подключение
  • выключить Wi-Fi

Это самый простой способ