Имитация режима полета в iPhone Simulator

Ответы:

114

Отключите сетевое соединение на Mac.

Роб Напье
источник
14
так очевидно, что я пнул себя. но в то же время они наверняка могли бы найти лучшее решение!
Benlumley 01
37
Это сложнее, чем кажется, хотя наша команда попросила Apple предоставить аналогичную функциональность. Проблема в том, что приложения, запущенные в симуляторе, на самом деле являются приложениями Mac. Симулятор iPhone не эмулирует iPhone; это просто среда, в которой приложения Mac могут связываться и выглядеть как iPhone. Таким образом, вам нужен способ на системном уровне ограничить связь приложения с сетью. Unix этого не обеспечивает; для его получения почти наверняка потребуется поддержка ядра. Вы могли бы сделать это проще для NSURLConnection и его родственников, но это может быть более запутанным, если некоторые вызовы работают, а некоторые нет.
Роб Нэпьер
13
Это не имитирует режим полета ... поскольку имитатор GPS по-прежнему работает, но не возвращает значение.
Jann
18
В некоторых случаях простое отключение сетевого подключения не так полезно. Например, когда вы проверяете доступность и доступность Интернета, иногда вам действительно нужен режим полета. Симулятор, у которого нет рабочего сетевого подключения, на самом деле не то же самое. Кроме того, на некоторых рабочих местах есть компьютеры, у которых есть реальные проблемы с аутентификацией, что означает, что отключение сетевого подключения не всегда вариант (поскольку все идет наперекосяк).
occulus
9
Я согласен с occuulus. При работе в офисе отключение сети для всей машины серьезно влияет на обмен данными в рабочей среде. Есть много ситуаций, когда это неприемлемое решение.
Krejko
59

Вы можете установить Apple Network Link Conditioner

На Йосемити:

Network Link Conditioner можно найти в пакете «Hardware IO Tools for Xcode». Его можно загрузить со страницы загрузок для разработчиков Apple . После завершения загрузки откройте DMG и дважды щелкните «Network Link Condition.prefPane» для установки ( источник ).

С помощью этой панели настроек вы можете создать профиль со скоростью 0 кбит / с.

Кондиционер сетевого канала

В более старых версиях OSX:

Mountain Lion / Mavericks: Xcode > Open Developer Tool > More Developer Tools
Лев:/Developer/Applications/Utilities/Network Link Conditioner

Свяжи меня
источник
11
Достижимость не видит никаких изменений при использовании Network Link Conditioner. Фактически, когда я устанавливаю его на 0 кбит / с и 100% потерю пакетов, он по-прежнему сообщает, что все работает и доступно через Wi-Fi. Это не работает при попытке протестировать режим полета.
E.Freitas
1
Вы уверены, что переключили большой переключатель слева в положение «ON»?
Tieme
Та же проблема, Link Conditioner до 0 кбит / с вверх / вниз и 100% потеря пакетов вверх / вниз не помогает. Симулятор iOS просто отключается через некоторое время. Максимальное значение полосы пропускания составляет 0 кбит / с.
Дизайн Адриан
17

Вы также можете использовать Little Snitch, чтобы выдержать темп. заблокировать подключение к Интернету для этого приложения.

Родед Конфорти
источник
Значит, вы можете редактировать файлы hosts, чтобы добиться того же, спасибо за идею, приятель.
panchicore
-1

Проще взломать: сделать функцию, проверяющую соединение

import NetInfo from '@react-native-community/netinfo';

export const ckeckIsConnected = async () => {
  const isConnected = NetInfo.fetch().then((state) => {
    return state.isConnected;
  });
  return isConnected;
};

Выполняйте выборку данных только при наличии соединения. Чтобы смоделировать отсутствие соединения, просто вернитесь false к этой функции независимо от того, какое соединение является реальным.

arnaudambro
источник