Чи можна відключити мережу в iOS Simulator?


430

Я намагаюся налагодити деяку непослідовну поведінку, яку я бачу в додатку, який отримує свої основні дані з Інтернету. Я не бачу проблем у тренажері, лише на пристрої, тому я хотів би відтворити мережеве та середовище підключення в тренажері.

Чи є якийсь спосіб відключення мережі в тренажері?

(Я підключаюсь до Mac віддалено, щоб кодувати, зараз немає іншого вибору, тому відключення мережі ОС не є можливим).


Я думаю, ви також можете використовувати CharlesProxy для проведення подібних тестів
Honey,

Відповіді:


273

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


52
Не впевнений, чи відповідає він на цю радіолокаційну помилку, але Інструменти для розробників тепер містять інструмент кондиціонера Network Link .
samvermette

7
Кондиціонер для мережевих посилань дозволяє вказати відсоток пакетів, які потрібно скинути, але, наскільки я бачив, на жаль, немає можливості відключити все підключення.
modocache

11
Наразі Кондиціонер мережевих посилань дозволяє встановити 100% втрату пакету, і, здається, працює.
Габріеле Петронелла

4
Оскільки симулятор розділяє мережеве з'єднання хост-машини, ви можете вимкнути Інтернет на своїй хост-машині, щоб імітувати "мережу відключено". Не ідеально, але це працює.
Аділ Хуссей

5
Зачекайте, Кондиціонер мережевих посилань застосовується до всього хост-машини, а не лише до тренажера. Чим це корисно? Я можу просто відключити мережеву мережу, якщо хочу цього.
судо

1734

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

Можна зробити самостійно за допомогою алюмінієвої фольги. Отвори повинні бути меншими за довжину хвилі вашої послуги передачі даних, якщо саме це ви хочете заблокувати.

800 МГц має довжину хвилі 37 см (14 "), 1900 МГц - довжину хвилі 16 см (6").

Це краще працює на фактичному пристрої, ніж на тренажері, оскільки Mac важко працювати, коли знаходиться у клітці Faraday ;-)

введіть тут опис зображення


179
Просто швидка пропозиція, якщо ви створите прохідну клітку Фарадея з письмовим столом всередині, з Mac буде набагато простіше працювати.
Кевін Лаїт

86
Ваша відповідь цікава, навіть якщо він попросив симулятор
vignesh kumar

76
Оскільки питання стосувалося тренажера, я думаю, що я просто зроблю один із них у Photoshop і встановлю його як фон мого робочого столу. Це, мабуть, спрацює, правда?
Тімоті Лі Рассел

8
Цей «трюк» професіонали використовували по-справжньому :) Ще тоді, коли я працював над смартфонами першого покоління, ми використовували міцні банки для печива. Не всі бренди працювали, але ті, що робили, були ідеальними.
Буде

11
слід сприймати як правильну відповідь! (Я вважаю за краще використовувати ящик з плюмбумом для iKryptonite)
gaussblurinc

309

Так. У Xcode ви можете перейти до Xcodeпункту меню -> Open Developer Tools-> More Developer Toolsі завантажити " Додаткові інструменти для Xcode ", де буде встановлений кондиціонер Network Link.

За допомогою цього інструменту ви можете імітувати різні мережеві сценарії (такі як 100% втрати, 3G, DNS з високою затримкою та багато іншого), а також можете створювати власні власні.


7
якщо ви знаходитесь на сайті розробника, він знаходиться в пакеті ГАРДАРІЙ IO TOOLS FOR XCODE.
рідкий

156
Якось я віддаю перевагу ідеї загортати свій пристрій у фольгу.
Майкл Робінсон

14
Починаючи з Xcode 8, кондиціонер Network Link знаходиться в пакеті " Додаткові інструменти для Xcode ".
ElegyD

6
Також 100% втрати пригнічують з'єднання хоста, тому це не є практичним рішенням. Якщо ви готові розвиватися без Інтернету, тоді просто витягнути штекер на машині розробника краще, ніж це рішення.
Jannie Theunissen

7
Це впливає на всіх мак. Я хочу вийти з підключення до Інтернету лише для симулятора, оскільки я віддалено використовую Mac ...
JCarlosR

48

Єдиний спосіб відключити мережу на тренажері iOS, який я знаю, - це використання таких інструментів, як Little Snitch або Hands Off . За допомогою них ви можете відмовити / заблокувати будь-які вихідні та вхідні мережеві з'єднання. Ви можете налаштувати його так, щоб він блокував лише з'єднання з програми симулятора. Працює як брандмауер.


11
але це не змусить симулятор вести себе так, як ви в офлайні. Це просто зробить ваші сервери недоступними, це зовсім інша річ.
Бліц

1
насправді, LordT, цього може бути достатньо для конкретних обставин, які у мене є ...!
Пол Хаммонд

phix23 - чи маєте ви перевагу між цими двома запропонованими інструментами?
Пол Хаммонд

Ні, я ні. Я лише спробував руки, тому що у неї є більше функцій.
Фелікс

2
+1: Я використовував Little Snitch саме для цієї мети, протестуючи, щоб переконатися, що програма Simulated працює, якщо мережеве з'єднання розірвано.
hotpaw2

18

Просто вимкніть свій WiFi в Mac OSX, це працює частуванням!


1
Не допомагає ОП, який конкретно заявив, що це не варіант, але це ідеальне просте рішення для мене.
Джонно

14

Завантажити пакет додаткових інструментів (Conditioner Network Link

Опис

Приклад в Сьєрра: введіть тут опис зображення

введіть тут опис зображення


9
Це також перешкоджає підключенню хоста, тому це не краще, ніж витягнути штекер на вашій розробницькій машині - без співпраці чи довідок в Інтернеті. Отже, не практичне рішення.
Jannie Theunissen

11

Просто оновлення відповіді до поточної дати. Оскільки у Xcode 4 (?) Є панель налаштувань у /Applications/Utilitiescall Network Link Conditioner. Або ви використовуєте один із існуючих профілів, або створюєте власний спеціальний профіль з 0 кбіт вгору / низхідній лінії зв'язку та 100% падінням.


1
Просто хочу додати, що якщо ви створюєте власні мережеві параметри з пропускною здатністю 0, це автоматично сприймає його як максимум. Важливо покласти 100% втрати пакетів.
Денис Кутлубаєв

Також хотілося б додати, що цей метод видаляє Інтернет з усього, а не лише тренажера. Можливо, навіть простіше просто вимкнути Інтернет повністю. Але все-таки це дуже зручний інструмент, оскільки ви можете імітувати Інтернет та Інтернет E різної якості.
Денис Кутлубаєв

Це, безумовно, найкраща відповідь, оскільки Network Link Conditionerце офіційний інструмент Apple, і він абсолютно безкоштовний, порівняно з Little Snitchабо Hands Off.
фатухоку

Гм, схоже, цей інструмент все-таки вимикає мережу. Я також виявив, що він не запускає сповіщення про доступність (я використав github.com/stefanomondino/STMReactiveReachability ).
фатухоку

4
Будьте попереджені - інструмент МЕРЕЖИХ ПОСИЛАННЯ КОНДИЦІОНЕР впливає на ВСІЙ машину, а не лише на iPhone Simulator. Якщо ви віддалитесь у свій mac to for dev, як я роблю за допомогою Xamarin Build Host, це вб'є ваш зв’язок.
Джон Коккоастен

10

Оскільки Xcode не забезпечує такої функції, ви обов'язково звернетесь до якоїсь сторонньої програми / інструменту. Відключення мережі MAC також допоможе вимкнути мережу iOS Simulator.

Ви можете вимкнути Інтернет MAC з " System Preferences..."> " Network" і вимкнути джерело мережі бажань.

Щоб перетворити ваш Інтернет-джерело MAC Ethernet: Мережеве джерело EtherNet

Щоб відключити джерело інтернету MAC WiFi (якщо ваш MAC у мережі Wifi): введіть тут опис зображення


7

Ви можете відключити підключення до Інтернету за допомогою стороннього додатка, такого як

Чарльз: http://www.charlesproxy.com/

Натисніть команду + shift + T на Mac, щоб налаштувати заглушку.


6

Одне, напевно, божевільна ідея чи пластир:

Просто перемкніть прапор доступності мережі

Це код , який я використовую , щоб переключити мій час виконання прапора, запускаючи «Попередження Тренажер пам'яті» і його повністю безпечним, просто переконайтеся , що код повинен знаходитися в режимі налагодження тільки

- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application 
{
#ifdef DEBUG
    isInternetAvailable = !isInternetAvailable;
#endif 
}

1
У мене глобальний клас зі статичною функцією перевірки підключення до Інтернету. Повернення false- чудова ідея. Не встановлюється, і я можу продовжувати роботу віддалено! Дякую.
JCarlosR

Де це isInternetAvailableвизначено ?!
CSawy

@CSawy Його прапор, який надсилає поточний стан підключення до Інтернету в класі досяжності.
Даршит Шах

3

Ви можете використовувати Little Snitch для відключення мережевого трафіку на будь-який окремий процес, включаючи той, який працює на тренажері iOS. Таким чином ви можете зберегти підключення до Інтернету та відключити свій запущений додаток.


3

З Xcode 8.3 та iOS 10.3:

XCUIDevice.shared().siriService.activate(voiceRecognitionText: "Turn off wifi")
XCUIDevice.shared().press(XCUIDeviceButton.home)

Обов’язково додайте @available(iOS 10.3, *)вгорі файл тестового набору.

Якщо ви хочете, ви можете "Увімкнути режим літака".

Після того, як Siri вимкне Wi-Fi або ввімкне режим літака, вам потрібно буде відмовитися від діалогу Siri, який говорить про те, що для Siri потрібен Інтернет. Це здійснюється натисканням кнопки "Додому", яка закриває діалог і повертається у ваш додаток.


Він може не працювати на iOS11GM. Я не можу знайти налаштування Wifi в тренажері.
Білл Чан

2
Використання Siri - не єдиний варіант з Xcode 9, коли можна активувати кілька додатків. Активізація програми "Налаштування iOS" для переключення Wi-Fi тепер теж працює.
brandenbyers

3

Є два способи відключення IOS Simulator Internet:

  • Відключіть мережеве з'єднання
  • Вимкніть Wi-Fi

Це найпростіший спосіб


3

Якщо ваш додаток підключається до певного домену, ви можете просто додати його у свій /etc/hostsфайл і перенести його до неіснуючого IP-адреси у вашій локальній мережі ... Для програми це буде таким же, як якщо б не було підключення до Інтернету або сервер недоступний.

sudo nano /etc/hosts

додати наступний рядок:

192.168.1.123   example.com

або використовувати, 127.0.0.1якщо ви не працюєте з веб-сервером на своїй локальній машині.



1

Просте рішення - створити режим для літака для вашого Mac. Ось як це зробити:

  • перейдіть до мережі в налаштуваннях системи
  • натисніть спадне меню "Місце розташування"
  • натисніть на значок плюс, щоб додати нове місце
  • назвіть нове місце розташування "Режим літака" або подібне та натисніть "Готово"
  • виберіть місце, яке ви тільки що створили, у спадному меню Location
  • натисніть на кожен доступний мережевий інтерфейс у списку ліворуч від вікна, по черзі відключаючи кожен
  • натисніть меню Налаштувати iPv4 і виберіть Вимкнути
  • для Wi-Fi просто натисніть кнопку Вимкнути Wi-Fi Вимкнути
  • натисніть Застосувати, і це місце заблокує всю мережеву діяльність

Коли ви хочете знову ввімкнути мережу, просто виберіть Автоматичне у спадному меню Місцезнаходження та натисніть Застосувати


1

Я б запропонував вам використовувати додаток Charles Proxy на Mac

Це дозволяє використовувати Bandwidth Throttleфункцію, створену саме для налаштування мережевого з'єднання

Зірочка / Стоп Дроння ⌘ command+ T
Налаштування дросельної заслінки ... ⌘ command+ T+⇧ shift


0

ви могли замість цього відключити мережу хоста!


7
Незручно не бачити StackOverflow під час налагодження проблем з підключенням програми!
фатухоку

Прочитайте останній рядок питання: "(Я підключаюсь до Mac віддалено, щоб кодувати. Зараз немає іншого вибору, тому відключення мережі ОС не є можливим)." Крім того, Вашу пропозицію вже два роки тому дав бенпалмер.
ToolmakerSteve

0

Якщо у вас є принаймні 2 мережі Wi-Fi для підключення, дуже простий спосіб - це помилка в тренажері iOS:

  1. киньте з тренажера (cmd-q), якщо він відкритий
  2. підключіть свій Mac до одного Wi-Fi (він може бути не підключений до Інтернету, не важливо)
  3. запустити симулятор (меню: xCode-> Відкрити інструмент для розробників-> Simulator iOs) та зачекати, поки він завантажиться
  4. переключити Wi-Fi мережу на іншу
  5. прибуток

Помилка в тому, що тренажер намагається використовувати мережу (IP?), Яка вже не підключена.

Поки ви не перезавантажили тренажер - у нього не буде Інтернету (навіть якщо у першої мережі Wi-Fi, до якої ви підключились, було з'єднання з Інтернетом), ви можете запустити (cmd-R) та зупинити (cmd-) проекти (-и), щоб використовувати тренажер без підключення, але ваш Mac буде підключено.

Потім, якщо вам потрібно запустити підключений симулятор - просто вийдіть і запустіть його.


0

Ви можете використовувати кондиціонер мережевих посилань на вашому Mac. Ви можете завантажити його з веб-сайту розробника яблук. Він повинен бути доступний там, де ми отримуємо старіші версії Xcode та iOS. За допомогою цього мережного кондиціонера ви можете змінити потужність мережі з wifi на відсутність мережі.

Також при встановленні мережного кондиціонера він встановлюється в налаштуваннях системи.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.