Как вы определяете соединение 3G и Wifi в мобильном сафари? - PullRequest
18 голосов
/ 22 декабря 2011

Я специально спрашиваю о javascript на мобильной веб-странице, а не о приложении target-c. Есть ли что-то вроде Apple Reachability для javascript, чтобы я мог определить, когда установлено или изменено соединение Edge, 3G или Wifi?

Ответы [ 3 ]

17 голосов
/ 29 января 2012

Нет, если браузеры не начнут передавать эту информацию через DOM, чего в настоящее время нет. Есть navigator объекты JavaScript, которые содержат много вещей, но не то, что вы ищете. Я также недавно читал в новостях, что некоторые операторы сотовой связи добавляли файлы cookie в запросы HTTP, сделанные на их телефонах. Было установлено, что они добавляют идентификаторы клиентов в файлы cookie (серьезное нарушение безопасности !!).

Mobile Safari добавляет некоторые новые DOM дополнения , но не то, что вы просите.

Без этих опций вы не можете. Слои Интернет-протокола предназначены для инкапсуляции и скрытия деталей нижних слоев. Вы не можете обнаружить Edge, 3G или Wifi больше, чем вы можете обнаружить кабель, DSL или лучшую оптику.

Наконец, , даже если бы вы могли получить эту информацию, это не принесло бы вам никакой пользы, если бы у вас не было сведений о каждом узле в вашем TCP-соединении. Например, у меня может быть следующая настройка:

iPad  ---WiFi---->  iPhone's Hotspot  ---3G--->  Carrier ---unknown--->>>

Добавление

В 2012-2013 гг. W3C реализовывал API сетевой информации , целью которого было предоставить "интерфейс для веб-приложений для доступа к базовой информации о подключении устройство ". В то время, когда , API предусматривал, что "предполагаемая" пропускная способность для браузера будет доступна через navigator.connection.bandwidth. По состоянию на апрель 2014 года эта работа была прекращена !!

Обновление: С 20 октября 2015 г. работа над этим API продолжается. Последние версии редактора для API сетевой информации можно найти на страницах W3C github.

3 голосов
/ 23 апреля 2015

Несмотря на то, что вы не можете использовать данные из браузера для определения, подключен ли пользователь к Wi-Fi или сотовой связи, захват IP-адреса пользователя может быть одним из способов разграничить соединение Wi-Fi и сотовой связи.

В этой статье о том, как сотовая связь влияет на ваш IP-адрес (http://classroom.synonym.com/wifi-change-ip-17586.html), говорится следующее:

Находясь в Wi-Fi, общедоступный IP-адрес вашего устройства будет соответствовать всем остальным компьютерам в вашей сети, а маршрутизатор назначит локальный IP-адрес. При использовании сотовой связи ваш оператор сотовой связи назначает общедоступный IP-адрес. Подключение к сотовому Интернету не использует маршрутизатор, поэтому у вашего устройства не будет локального IP-адреса.

ЕСЛИ ip = localIp, то соединение = wifiConnection

IF ip = publicIp, затем connection = cellConnection

Вот скриншот моего IP, когда я на сотовой связи:

enter image description here

Вот скриншот моего IP (сразу после отключения сотовой связи) по Wifi:

enter image description here

Это может быть один ответ на проблему без помощи браузера.

0 голосов
/ 22 октября 2018

В настоящее время это ограничение улучшилось, но все еще существуют ограничения для API информации о сети, поддерживаемые в различных браузерах (мобильных или нет), https://caniuse.com/#search=network

Если это вам поможет, в нашем случае какнаше конкретное мобильное приложение является гибридным и разработано с использованием Ionic, мы смогли сделать это на iOs или Android с помощью этого плагина cordova: https://github.com/apache/cordova-plugin-network-information, который работает как шарм.

...