AppleがiPhoneのネットワーク接続状態を確認するのに便利なReachabilityというクラスを公開してくれているのだが、ソースコードがバージョンアップされており、このクラスの使い方に若干の変更があったようなので、以下にメモとして残しておく*1。
Reachabilityの古いバージョン(v1.5)では、例えば以下のような実装でiPhoneの現在のネットワーク接続状況をチェックする事が出来た。
Reachability *curReach = [Reachability sharedReachability]; NetworkStatus netStatus = [curReach internetConnectionStatus]; switch (netStatus) { case NotReachable: NSLog(@"Access Not Available"); break; case ReachableViaCarrierDataNetwork: NSLog(@"Reachable via Carrier Data Network"); break; case ReachableViaWiFiNetwork: NSLog(@"Reachable via WiFi"); break; }
しかし、新しいバージョン(v2.0)では、クラスメソッド sharedReachabilityがなくなっていた。その代わりにreachabilityForInternetConnectionというメソッドを使えば良いようだ。またNetworkStatusのenum値も変更されていた。
新しいバージョンのReachabilityを使って、上記と同様の事をする場合には以下のような形になる。
Reachability *curReach = [Reachability reachabilityForInternetConnection]; NetworkStatus netStatus = [curReach currentReachabilityStatus]; switch (netStatus) { case NotReachable: NSLog(@"Access Not Available"); break; case ReachableViaWWAN: NSLog(@"Reachable via WWAN"); break; case ReachableViaWiFi: NSLog(@"Reachable via WiFi"); break; }
参考記事
*1:バージョンアップがあったのは去年の8月なので結構前だった