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

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

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

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

17 ответов


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


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

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

800 Mhz имеет длину волны 37 cm (14") , 1900 Mhz имеет длину волны 16 cm (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 Кбит / с Вверх / Вниз и 100%.


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

описание

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

enter image description here


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

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

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

чтобы отключить вас MAC WiFi интернет-Источник(Если ваш MAC находится в Интернете Wifi): 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. переключить сеть wifi на другую один
  5. прибыль

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

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

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


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

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


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

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

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