iPhone Simulator - имитировать медленное соединение?

125

Есть ли способ замедлить интернет-соединение с симулятором iPhone, чтобы имитировать реакцию приложения, когда вы находитесь в медленном месте в сотовой сети?

Крис
источник
Ответ Алана следует принять.
Станислав Майоров
@StanislavMayorov, этот вопрос задан 9 лет назад. Затем Алан дал обновленный ответ 4 года спустя. После этого прошло 5 лет. Извините, я не просматриваю и не пересматриваю принятые ответы на свои старые вопросы.
Крис

Ответы:

67

Приложение под названием SpeedLimit

https://github.com/mschrag/speedlimit

Прекрасно работает.

Крис.

PyjamaSam
источник
awesome только что попробовал это, и он работает. Спасибо!
Макс МакЛауд
Йосемити: не удалось установить ограничение скорости
Injectios
2
Failed to set speed limit
Сломано
1
Правильный способ сделать это объясняется Alan H. ответ .
lifeisfoo
«Я больше не могу поддерживать этот проект. Пожалуйста, не стесняйтесь раскошелиться и стать владельцем».
Катанор
261

Как установить Apple Network Link Conditioner

Эти инструкции актуальны по состоянию на октябрь 2019 года.

Предупреждение: если вы только что обновились до новой версии macOS, убедитесь, что вы установили самую последнюю версию Network Conditioner ( в дополнительных инструментах для Xcode ), иначе он может потерпеть неудачу ; то есть вы включите его, но он ничего не дросселирует и не отбрасывает пакеты.

Обновление: Начиная с Xcode 11, может быть еще более простой способ имитировать состояние сети на привязанных устройствах; см. это сообщение в блоге . Чтобы узнать, как воздействовать на моделируемые устройства, продолжайте, как и раньше.

  1. Установите Xcode, если у вас его нет.

  2. Откройте Xcode и перейдите к Xcode ›Открыть инструмент разработчика› Дополнительные инструменты разработчика…

    Снимок экрана с навигацией по меню, как описано

  3. Загрузите дополнительные инструменты для Xcode (соответствующие вашей текущей версии Xcode)

    Ссылка для загрузки дополнительных инструментов ввода-вывода

  4. Откройте загруженный образ диска и дважды щелкните .prefpane Network Link Conditioner в разделе «Оборудование», чтобы установить его.

    панель pref в DMG

    системные настройки с отображением запроса на установку

  5. Ну вот!

    Снимок экрана панели настроек

  6. Обязательно включите. Вам нужно выбрать профиль и включить сетевой кондиционер с помощью большого переключателя, который должен быть знаком из предварительной панели Time Machine.

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

Предостережение

Это не повлияет на localhost, поэтому обязательно используйте промежуточный сервер или компьютер коллеги для имитации медленных сетевых подключений к API, который вы используете сами. Вы можете найти https://ngrok.com/ полезным в этом отношении.

Алан Х.
источник
6
для Xcode 8 это включено в «Дополнительные инструменты для Xcode 8» (вместо «Аппаратные инструменты ввода-вывода для Xcode»)
Мохит Сингх,
1
@MohitSingh Спасибо. Я обновил ответ выше.
Алан Х.
1
Удивительный! Спасибо.
Томас Калмон,
1
Кажется, нет дополнительных инструментов для Xcode 10.3?
Лев
1
@leo, просто используйте текущие Дополнительные инструменты для основной версии Xcode, которая у вас есть. Например, используйте Дополнительные инструменты для Xcode 11, если у вас установлен Xcode 11.1 .
Алан Х.
81

"Для этого есть приложение!" ;) Apple предоставляет панель предпочтений «Network Link Conditioner», которая неплохо справляется со своей задачей.

  • для версий Xcode до 4.3 установщик панели можно найти в вашей Developerпапке, например "/Developer/Applications/Utilities/Network Link Conditioner", после установки, если демон не запускается и вы не хотите перезагружать компьютер, просто используйте sudo launchctl load /system/library/launchdaemons/com.apple.networklinkconditioner.plist
  • если вы уже сделали с Developerпапкой, вы можете установить панель как часть пакета «Hardware IO Tools for Xcode», доступного в разделе дополнительных загрузок Mac Dev Center.

Ссылка на страницу загрузки (вы должны войти в систему со своим Apple ID): https://developer.apple.com/downloads/index.action
(кредиты на @nverinaud)

MATM
источник
2
Вот ссылка для просмотра доступных загрузок: developer.apple.com/downloads/index.action
nverinaud
2
не работает на Mountain Lion ... stackoverflow.com/questions/12414676/…
zack
было бы неплохо, если бы это было приложение для конкретного приложения, а не для всего компьютера
Чарльз Джон Томпсон III
3
Вы можете загрузить «Hardware IO Tools» с сайта инструментов разработчика Apple. Они обновляют его для новых выпусков Xcode (и, следовательно, OSX): в Xcode щелкните Xcode-> Open Developer Tool-> More Developer Tools..., войдите в систему, найдите последний архив, загрузите, скопируйте файлы куда-нибудь, дважды щелкните элемент панели настроек Network Conditioner, установите его .. . ура!
i_am_jorf 07
Я думаю, это не работает для Йосемити. Я установил "с потерями", но на самом деле не заметил никакой разницы
Injectios
2

Также стоит упомянуть, что Xcode также имеет встроенный способ для устройств , а не для симулятора.

  • Просто зайдите в "Устройства и симулятор" ( cmmd+shift+2)
  • Выберите ваше устройство
  • Прокрутите вниз, пока не найдете "Условия устройства"
  • Установите желаемый профиль
  • Хит Старт

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

Чтобы это работало, вам необходимо установить «Network Link Conditioner». См. Шаги, упомянутые в ответе Алана

Мед
источник
0

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

Вы захотите достичь двух вещей (в зависимости от ваших обстоятельств):

  • ограничить пропускную способность
  • увеличьте вашу задержку

Возможно, это укажет вам правильное направление:

http://www.macosxhints.com/article.php?story=20080119112509736

Есть и хорошие решения с открытым исходным кодом, но я не могу вспомнить их названия.

Этот вопрос может помочь: как ограничить сетевой трафик для моделирования среды?

Джей Джей Рорер
источник
0

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

Вот удобный сценарий для настройки брандмауэра для эмуляции этих параметров:

http://pmilosev-notes.blogspot.com/2011/02/ios-simulator-testing-over-different.html

Ник Доуэлл
источник
2
Network Link Conditioner (инструмент от Apple, который устанавливается в качестве панели предпочтений) имитирует медленные соединения, потерю пакетов и задержку.
n00neimp0rtant
Network Link Conditioner, добавленный в OS X Lion (выпущенный в июле 2011 г.), делает такие скрипты ненужными.
Ник Доуэлл