Ответ 1
Я боюсь, что симулятор не использует какое-либо сетевое соединение, которое использует ОС. Я подал отчет об ошибке Radar об имитации сетевых условий некоторое время назад; вы можете подумать о том, чтобы сделать то же самое.
Я пытаюсь отладить некоторое противоречивое поведение, которое я вижу в приложении, которое получает свои первичные данные из Интернета. Я не вижу проблем в симуляторе, просто на устройстве, поэтому я хотел бы воспроизвести среду и среду подключения в симуляторе.
Есть ли способ отключить сеть в симуляторе?
(Я подключаюсь к Mac удаленно к коду, сейчас нет другого выбора, поэтому отключить сеть ОС не вариант).
Я боюсь, что симулятор не использует какое-либо сетевое соединение, которое использует ОС. Я подал отчет об ошибке Radar об имитации сетевых условий некоторое время назад; вы можете подумать о том, чтобы сделать то же самое.
Используйте простую клетку Faraday, чтобы заблокировать или ограничить уровень внешнего радиочастотного сигнала.
Вы можете сделать свой собственный с алюминиевой фольгой. Если это то, что вы хотите заблокировать, отверстия должны быть меньше wavelength вашей службы данных.
800 МГц имеет длину волны 37 см (14 "), 1900 МГц имеет длину волны 16 см (6 ").
Это лучше работает с реальным устройством, чем с симулятором, так как Mac трудно работать, когда внутри клетки Фарадея; -)
Да. В Xcode, вы можете перейти к Xcode
пункт меню → Open Developer Tools
для More Developer Tools
Open Developer Tools
→ More Developer Tools
и скачать " Дополнительные инструменты для Xcode ", который будет иметь сетевой Link Conditioner.
Используя этот инструмент, вы можете моделировать различные сетевые сценарии (например, 100% потери, 3G, DNS с высокой задержкой и т.д.), А также можете создавать свои собственные.
Единственный способ отключить сеть на симуляторе iOS, который я знаю, - это использовать такие инструменты, как Little Snitch или Hands Off. С их помощью вы можете запретить/заблокировать любые входящие и входящие сетевые подключения. Вы можете настроить его так, чтобы он блокировал только соединения из приложения-симулятора. Работает как брандмауэр.
Просто отключите Wi-Fi в Mac OSX, это работает!
Загрузить Дополнительный пакет инструментов (Network Link Conditioner)
Просто обновите ответ на текущую дату. Так как Xcode 4 (?) Есть панель предпочтений в /Applications/Utilities
, называемая Network Link Conditioner
. Либо вы используете один из существующих профилей, либо создаете свой собственный профиль с 0 Кбит/с Up/Downlink и 100% -ным снижением.
Так как Xcode не предоставляет такую функцию, вы обязательно пойдете на стороннее приложение/инструмент. Отключение сети MAC также поможет отключить сеть iOS Simulator.
Вы можете отключить свой MAC-интернет от "System Preferences...
" > "Network
" и отключить источник сети желаний.
Чтобы отключить ваш интернет-источник MAC Ethernet:
Чтобы отключить ваш интернет-источник MAC WiFi (если ваш MAC находится в Интернете Wifi):
Вы можете отключить интернет-соединение с сторонним приложением, например
Чарльз: http://www.charlesproxy.com/
Нажмите команду + shift + T на Mac, чтобы настроить дросселирование.
Вероятно, сумасшедшая идея или патч:
Просто переключите флаг доступности сети
Это код, который я использую для переключения времени выполнения флага с помощью запуска "Предупреждение памяти симулятора" и его ПОЛНОСТЬЮ БЕЗОПАСНО, просто убедитесь, что код должен находиться в режиме DEBUG только
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application
{
#ifdef DEBUG
isInternetAvailable = !isInternetAvailable;
#endif
}
Вы можете использовать Little Snitch, чтобы отключить сетевой трафик на любой отдельный процесс, в том числе на симуляторе iOS. Таким образом, вы можете поддерживать подключение к Интернету и отключать свое приложение.
С Xcode 8.3 и iOS 10.3:
XCUIDevice.shared().siriService.activate(voiceRecognitionText: "Turn off wifi")
XCUIDevice.shared().press(XCUIDeviceButton.home)
Обязательно включите @available(iOS 10.3, *)
в начало файла вашего тестового набора.
В качестве альтернативы вы можете включить "Включить режим полета", если хотите.
Как только Сири отключит Wi-Fi или включит режим самолета, вам нужно будет отменить диалог Siri, в котором говорится, что Сири требует Интернета. Это достигается нажатием кнопки "домой", которая отклоняет диалог и возвращается в ваше приложение.
Есть два способа отключить интернет IOS Simulator:
Это самый простой способ
Вы можете использовать OHHTTPStubs и отключить сетевые запросы к определенным URL-адресам.
Если ваше приложение подключается к определенному домену, вы можете просто добавить его в файл /etc/hosts
и направить его на несуществующий IP-адрес в локальной сети... Для приложения оно будет таким же, как если бы оно было нет подключения к интернету или сервер не доступен.
sudo nano /etc/hosts
добавьте следующую строку:
192.168.1.123 example.com
или используйте 127.0.0.1
если вы не используете веб-сервер на локальном компьютере.
вместо этого вы можете отключить сеть хоста!
Простое решение - создать режим полета для вашего Mac. Вот как это сделать:
Если вы хотите снова включить сеть, просто выберите "Автоматически" в раскрывающемся меню "Расположение" и нажмите "Применить".
Если у вас есть как минимум 2 Wi-Fi-сети для подключения, очень простой способ - использовать ошибку в iOS-симуляторе:
Ошибка заключается в том, что симулятор пытается использовать уже не подключенную сеть (IP?).
Пока вы не начнете работать с симулятором - у него не будет интернета (даже если ваша первая сеть Wi-Fi у вас была подключена к Интернету), поэтому вы можете запускать (cmd-R) и останавливать (cmd-.) проект для использования симулятора без подключения, но ваш Mac будет подключен.
Затем, если вам нужно запустить подключенный имилятор, просто закройте его и запустите.
Вы можете использовать кондиционер сетевой линии на своем Mac. Вы можете загрузить его с веб-сайта разработчика Apple. Он должен быть доступен, когда мы получаем более старые версии Xcode и iOS. С помощью этого сетевого кондиционера вы можете изменить силу сети с Wi-Fi на отсутствие сети.
Также при установке сетевого кондиционера он устанавливается в системных настройках.
Вы можете установить Симулятор в режим полета/режим полета