Можно ли отключить сеть в симуляторе iOS?
Я пытаюсь отладить некоторое непоследовательное поведение, которое я вижу в приложении, которое получает свои основные данные из интернета. Я не вижу проблем в симуляторе, только на устройстве, поэтому я хотел бы воспроизвести среду сети и подключения в симуляторе.
есть ли способ отключить сеть в симуляторе?
(я подключаюсь к Mac удаленно к коду, нет другого выбора прямо сейчас, поэтому отключение сети ОС не является опцион.)
17 ответов
боюсь, что нет-симулятор разделяет любое сетевое соединение, которое использует ОС. Я подал сообщение об ошибке радара о моделировании сетевых условий некоторое время назад; вы могли бы рассмотреть возможность сделать то же самое.
использовать простой клетка Фарадея для того чтобы преградить или ограничить внешний уровень сигнала RF.
вы можете сделать свой собственный с алюминиевой фольгой. Отверстия должны быть меньше, чем волны службы данных если это то, что вы хотите заблокировать.
800 Mhz имеет длину волны 37 cm (14") , 1900 Mhz имеет длину волны 16 cm (6").
Это работает лучше с фактическим устройством, чем с симулятором, так как Mac трудно работать, когда внутри клетки Фарадея ;-)
Да. В Xcode вы можете перейти в Xcode
пункт - > меню Open Developer Tools
->More Developer Tools
скачать "дополнительные инструменты для Xcode", который будет иметь кондиционер сетевого соединения.
используя этот инструмент, вы можете имитировать различные сетевые сценарии (такие как 100% потеря, 3G, DNS с высокой задержкой и многое другое), и вы также можете создавать свои собственные.
единственный способ отключить сеть на симуляторе iOS, который я знаю, - это использовать такие инструменты, как Крысеныш или Руки. С их помощью вы можете запретить / заблокировать любые сетевые подключения. Вы можете настроить его так, что он блокирует только соединения из приложения симулятора. Работает как брандмауэр.
просто обновите ответ на текущую дату. Начиная С Xcode 4 (?) есть панель настроек в /Applications/Utilities
под названием Network Link Conditioner
. Либо вы используете один из существующих профилей, либо создаете свой собственный профиль с 0 Кбит / с Вверх / Вниз и 100%.
скачать пакет дополнительных инструментов (Кондиционер Сетевого Соединения)
поскольку Xcode не предоставляет такую функцию, вы обязательно перейдете на какое-то стороннее приложение/ инструмент. Отключение сети MAC также поможет отключить сеть симулятора iOS.
вы можете отключить вас MAC интернет от"System Preferences...
" > "Network
" и выключите источник сети желаний.
чтобы отключить вас Mac Ethernet интернет источник:
чтобы отключить вас MAC WiFi интернет-Источник(Если ваш MAC находится в Интернете Wifi):
вы можете дросселировать подключение к интернету с помощью стороннего приложения, такого как
Чарльз: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) и ждать, пока он будет загружен
- переключить сеть wifi на другую один
- прибыль
ошибка в том, что симулятор пытается использовать сеть (IP?), который еще не подключен.
пока вы не перезапустили симулятор - у него не будет интернета (даже если первая сеть wifi, которую вы подключили, имела подключение к интернету), поэтому вы можете запустить (cmd-R) и остановить (cmd-.) проект(ы) для использования симулятора без подключения, но ваш Mac будет подключен.
затем, если вам нужно запустить симулятор подключен - просто выйти и запустить он.
вы можете использовать кондиционер сетевого соединения на вашем Mac. Вы можете скачать его с веб-сайта разработчика apple. Он должен быть доступен там, где мы получаем старые версии Xcode и iOS. С помощью этого сетевого кондиционера вы можете изменить силу сети от wifi до no network.
также при установке сетевого кондиционера он устанавливается в Системных настройках.
здесь два способ отключить iOS симулятор сети:
- отключите сетевое подключение
- выключить Wi-Fi
Это самый простой способ