Способ узнать, какой тип подключения к Интернету я использую на iPhone

#iphone #cocoa-touch

Вопрос:

Мне нужно знать, какое подключение к Интернету доступно, когда работает мое приложение. Я проверил пример достижимости от Apple, но он отличается только между Wi-Fi и сетью оператора. Что мне нужно знать, так это то, какая сеть оператора выбрана, UMTS, EDGE или GPRS.

Ответ №1:

В настоящее время эта информация недоступна. Если вам нужна эта функция, зарегистрируйте новую ошибку и упомяните, что это дубликат ошибки 6014806.

Ответ №2:

Вы можете сделать предположение о том, в какой сети вы находитесь, проверив задержку при подключении к вашему серверу в оба конца. Если вы получаете данные менее 100 мс, вы почти наверняка подключены к Wi-Fi.

GPRS и EDGE работают с задержкой около 600 мс. Скорость передачи данных UMTS/HSDPA составляет 100-200 мс.

Источник: мое неофициальное тестирование и данные [ATamp;T][1].

Комментарии:

1. я думаю, что этот метод неточен. Задержка сильно варьируется в зависимости от приема сигналов.

2. ATamp;T перенаправляет интернет-трафик всего на несколько порталов, выходящих в Интернет. Если вы запустите маршрут трассировки для соединения, вы сможете его увидеть. Например, я был к северу от Бостона и пытался пройти тест на скорость в бостонской контрольной точке на Speedtest.net … Связь шла из Мэна в Виргинию и обратно в Бостон. Apple необходимо опубликовать API, которые позволят вам установить, как/что вы подключены к оператору связи. Вы можете перевести свой телефон в тестовый режим (наберите 3001#12345# ) и посмотреть некоторые из них.

Ответ №3:

Вместо того, чтобы жестко кодировать различные версии вашего сайта для широкополосной связи 3G, EDGE, GPRS, Wi-Fi, почему бы не создать платформу, которая определяет скорость соединения и загружает ваш сайт до соответствующего уровня пропускной способности? Таким образом, вы получите соответствующие результаты при медленном 3G / wifi, и это, естественно, будет масштабироваться до следующего поколения беспроводной широкополосной связи (например, WiMAX и 802.11 n) с минимальными усилиями / сбоями.

Например, вы можете определить различные «контрольные точки» пропускной способности (которые могут соответствовать 3G, EDGE и т. Д.), Затем вы можете сделать что-то вроде передачи небольшого объема данных или кэширования небольшого изображения (например, значка), общего для всех уровней пропускной способности, оценить скорость загрузки в фоновом режиме и соответственно установить уровень пропускной способности.

Ответ №4:

Только файл

Мне нравится ответ Веджа. Однако я не уверен, что файл не будет кэшироваться интернет-провайдерами. Вы всегда можете продолжать генерировать новое имя файла или выбрать достаточно большое, чтобы тестировать его достаточно долго, чтобы получить результат.

Простая задержка

Идея использования задержки близка, но, как упоминал Шиван, она неточна. Пользователь из Австралии в Великобританию получит задержку около 350 мс по сравнению с местным пользователем, который мог видеть ее всего 30-40 мс

Решение: Среднее отклонение

Если вы пропингуете свой сервер 3 пакетами, а затем посмотрите на среднее отклонение (mdev) при 3G, обычно оно составляет менее 50 мс. При 2G/EDGE это почти всегда превышает 100 мс. У меня один выброс на 65 мс до AUS.

Мои тесты обнаружили диапазон от 4 мс до 38 мс, за исключением только одного теста в Австралию из Бельгии на 202 мс.

Надеюсь, это кому — нибудь пригодится..