Я специально спрашиваю о javascript на мобильной веб-странице, а не о приложении objective-c. Есть ли что-то вроде Apple Reachability для javascript, поэтому я могу сказать, когда сделаны или изменены соединение Edge, 3G или Wifi?
Как вы обнаруживаете соединение 3G против Wi-Fi на мобильном сафари?
Ответ 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-адреса, когда я на сотовом телефоне:
Вот скриншот моего IP (сразу после отключения сотовой связи) на Wi-Fi:
Это может быть один ответ на проблему без помощи браузера.