Appleが提供する通信状態を取得するサンプルコードがIPv6対応等行われ ver3.5→5.0へと大きく変わったのでもう一度調べてみました。
Appleサンプルコード
Reachability Version 5.0, 2016-05-05
環境
Xcode 7.3.1
iOS 9.3.2
SIM au
実機で確認する
AppleのReachabilityで取得できる値は3種類
1.NotReachable (回線なし)
2.ReachableViaWiFi (Wi-Fi回線)
3.ReachableViaWWAN (WWAN回線)
実機のステータスではどれに当てはまるか確認をした
4G(3G)
4G回線使用時は”WWAN”を取得。
Wi-Fi
Wi-Fi回線使用時は”WiFi”を取得。
機内モード
機内モード時は”NotReachable”を取得。
SIMなし
SIMなし時は”NotReachable”を取得。
4G→圏外
4G回線から圏外に移行した時は”WWAN”を取得。
通信ができないので”NotReachable”かと思いましたが違いました。
注意が必要です。
Wi-Fi→圏外
Wi-Fi通信中(4Gは圏外状態)からWi-FiをOFFにして4G圏外に移行した時”WWAN”を取得。これも”NotReachable”ではないので注意が必要です。
機内モード→圏外
機内モードから4G圏外に移行した場合(一度も4Gをつかめなかった場合)”NotReachable”を取得。
まとめ
このサンプルコードは、Wi-Fi通信とその他の2種類しか正確に状態を取得できそうにありません。Wi-Fi通信中かそうでないかを取得するときには使えると思います。
残念ながらversion3.5とほとんど変わりませんでした。
以下結果をまとめました。
NotReachable
1.機内モード
2.SIMなし
3.機内モードONからOFFにしてWANをつかめない時
ReachableViaWWAN
1.4G
2.一度WANを掴んで圏外になったとき
3.Wi-Fi通信中、WAN圏外からWi-FiをOFFにしたとき
ReachableViaWiFi
1.Wi-Fi通信時
今回使用したサンプルコード
プロジェクトファイル — github
コメント