UIDeviceあたりで簡単にわかるのかと思ったら、意外と面倒なのね。
なんか調べるのが下手なのかもしれませんが。
まあ機器の状態だけでは計り知れない奥深さはあるのかもしれないけど。なんか調べるのが下手なのかもしれませんが。
しかしNSURLConnectionでエラー調べて、ってのはちょっとダルい。
いろいろ調べると、(いや、それほど調べてませんw)
http://stackoverflow.com/questions/741145/determining-internet-availability-on-iphone
に書いてあったのが短くて、動きも期待した通りだった。
↓は更に簡略化。(ここでの重複チェックは余計と思ったので)
- (BOOL)isDataSourceAvailable{ Boolean success; const char *host_name = "twitter.com"; //通信可能か調べたいホスト SCNetworkReachabilityRef reachability = SCNetworkReachabilityCreateWithName(NULL, host_name); SCNetworkReachabilityFlags flags; success = SCNetworkReachabilityGetFlags(reachability, &flags);
BOOL
isDataSourceAvailable = success && (flags & kSCNetworkFlagsReachable) && !(flags & kSCNetworkFlagsConnectionRequired);
CFRelease(reachability); return isDataSourceAvailable; }
確認したい時にしっかり確認できないと意味ねー、て思ったので簡略化しました。
SystemConfiguration.frameworkと
SystemConfiguration/SystemConfiguration.hの@import
SystemConfiguration/SystemConfiguration.hの@import
が必要です。
なんて、これでいいのかな・・・。
なんて、これでいいのかな・・・。
しかし、「りーちゃびりてぃ」ねえ。
通信って面倒いなあ。
0 件のコメント:
コメントを投稿