Как вы обнаруживаете соединение 3G против Wi-Fi на мобильном сафари? - программирование
Подтвердить что ты не робот

Как вы обнаруживаете соединение 3G против Wi-Fi на мобильном сафари?

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

4b9b3361

Ответ 1

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

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

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

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

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

Добавление

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

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

Ответ 2

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

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

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

IF ip = localIp, затем connection = wifiConnection

IF ip = publicIp, затем соединение = сотовая связь

Вот скриншот моего IP-адреса, когда я на сотовом телефоне:

enter image description here

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

enter image description here

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