web-dev-qa-db-ja.com

モバイルサファリで3G接続とWifi接続をどのように検出しますか?

私は特に、Objective-Cアプリケーションではなく、モバイルWebページ上のJavaScriptについて質問しています。 Apple javascriptの到達可能性のようなものがあるので、Edge、3G、またはWifi接続がいつ確立または変更されたかを知ることができますか?

ブラウザがDOMを介してこの情報を提供し始めない限り、現在は提供していません。 navigator javascriptオブジェクトがあります。これは多くのものを保持しますが、探しているものは保持しません。最近のニュースで、一部の携帯電話会社が携帯電話で行われたHTTPリクエストにCookieを追加していることも読みました。彼らは顧客IDをCookieに追加していることが判明しました(巨大なセキュリティ違反!!)。

Mobile Safariはいくつかの新しい DOM追加 を追加しますが、あなたが求めているものは追加しません。

これらのオプションがなければ、できません。インターネットプロトコルのレイヤーは、最下層の詳細をカプセル化して非表示にすることを目的としています。 Edge、3G、またはWifiは、ケーブル、DSL、またはより細かい光学系を検出できる以上に検出することはできません。

最後に、この情報を取得できたとしても、すべての詳細がなければ、何の役にも立ちません。 TCP接続のノード。たとえば、次の設定を行うことができます。

iPad --- WiFi ----> iPhoneのホットスポット--- 3G --->キャリア---不明--- >>>

補遺

2012- 2013年に、 W3C が具体化されました ネットワーク情報API これは "Webアプリケーションが基盤にアクセスするためのインターフェイスを提供することを目的としていましたデバイスの接続情報」当時 、APIは、ブラウザの「推定」帯域幅がnavigator.connection.bandwidthを介して取得可能であると規定しました。 2014年4月現在、その作業は中止されています!!

更新:2015年10月20日現在、このAPIの作業は継続されています。最新の Network Information APIの編集者ドラフト はW3Cのgithubページにあります。

18
user1040049

ブラウザからのデータを使用して、ユーザーがWifiまたはセルラー接続を使用しているかどうかを検出することはできませんが、ユーザーのIPをキャプチャすることは、Wifi接続とセルラー接続を区別する1つの方法です。

セルラーがIPアドレスに与える影響に関するこの記事( http://classroom.synonym.com/wifi-change-ip-17586.html )には、次のように記載されています。

Wi-Fiを使用している間、デバイスのパブリックIPはネットワーク上の他のすべてのコンピューターと一致し、ルーターはローカルIPを割り当てます。携帯電話接続を使用している間、携帯電話会社はパブリックIPを割り当てます。セルラーインターネットへの接続はルーターを使用しないため、デバイスにはローカルIPがありません。

Ip = localIpの場合、接続= wifiConnection

Ip = publicIpの場合、connection = CellularConnection

これは、携帯電話を使用しているときのIPのスクリーンショットです。

enter image description here

Wifiでの私のIP(携帯電話をオフにした直後)のスクリーンショットは次のとおりです。

enter image description here

これは、ブラウザの助けがなければ問題に対する1つの答えになる可能性があります。

3
Collarbone

現時点では、この制限は改善されていますが、さまざまなブラウザ(モバイルかどうか)でサポートされているネットワーク情報APIにはまだ制限があります https://caniuse.com/#search=network

これがあなたを助けるなら、私たちの特定のモバイルアプリケーションはハイブリッドであり、Ionicを使用して開発されているので、iOまたはAndroidこのcordovaプラグインを使用して: https://github.com/Apache/cordova-plugin-network-information これは魅力のように機能します。

0
rtrujillor