iPhone SDKはWifiとキャリアネットワークを検出します
-
06-07-2019 - |
質問
私のアプリはインターネットにアクセスしますが、wifiまたはキャリアデータネットワークを介した接続の有無を検出したいだけです
アップルは、その「到達可能性」の例を作成しました
https://developer.apple.com/iphone/library/samplecode/到達可能性/
iは、キャリアネットワークではなくwifiを検出するだけだと思います
接続(任意のタイプの接続)があるかどうかを検出するために最善の方法を教えてください。
あなたの助けに感謝します!
解決
そのサンプルはまさにあなたが必要とするものです。
Reachability.mをご覧ください。接続があるかどうかを確認してから、どのような接続を持っているかを通知します。
他のヒント
接続されているかどうか、および接続されている場合は使用している接続の種類を検出するだけの場合、到達可能性の例は過剰になります。実際、この例には、状態の変化を通知するコールバックをセットアップして使用する方法を示すコードも含まれています。
接続されているかどうか、使用している接続の種類を正確に示すソースコードのスニペットについては、こちら。
Webリソースへのリクエストを行うと、iPhoneは検出した接続を使用し、wifi(優先度が高い)を使用し、wifiが接続されていない場合はキャリアネットワークを使用します。 キャリアネットワークを妨げるコード設定はありません。
必要なこと:
- テスト場所で信号を確認します。
- サファリでアクセスしようとしているリンクをチェックして、問題のあるアプリではないことを確認します。
- サファリでリンクが機能しない場合は、キャリアサポートに連絡してください(キャリアネットワークを使用していることを確認してください)
これらの手法は便利ですが、インターネットへのデバイスのパスがいくつかの異なるタイプの接続で構成されている可能性があることに注意してください。たとえば、iPhoneまたはiPod touchはWiFiを使用してモバイルホットスポットに接続している場合があり、モバイルホットスポットには独自の3Gワイヤレス接続があります。したがって、WiFi接続の存在が3Gよりも高い帯域幅を意味すると想定するのは安全ではありません。
到達可能性(Appleのサンプルコードと他の人々の同様のコードの両方、および基礎となるSCNetworkReachabilityは、インターネットアクセスがないか、WiFi経由でインターネットアクセスを取得するか、モバイル経由でインターネットアクセスを取得することを通知しますデータ。
WiFiデータとモバイルデータの両方を使用できる場合、「WiFi」と表示されます。 WiFiを使用しているときにモバイルデータが利用可能であることを確認する方法はありません。 (WiFiがない場合、モバイルデータが利用可能であることが簡単にわかります)。機内モードがオンになっているかどうかはわかりません(Wi-Fiおよびモバイルデータがオフになっている場合とは異なります)。
利用可能なWiFiは、ダウンロードがモバイルデータではなくWiFiを使用することを保証しません。自宅でダウンロードを開始し、しばらくしてからWiFiが消えると、iOSは3Gを介してダウンロードを続行します。ダウンロード呼び出しでフラグを設定して、3Gを禁止できます。エラーコードは-1009 =インターネットアクセスなし、3Gが利用可能であったことについての言及はありません。
CTTelephonyNetworkInfoを使用すると、モバイルデータがある ことができるデバイスにいることがわかります(モバイルデータのないiPod TouchまたはiPadではなく、デバイスにSIMがあります)。