App Developer Library のReachabilityを使用してインターネット接続を確認します。コードは次のとおりです。
+(BOOL)reachable {
Reachability *r = [Reachability reachabilityForInternetConnection];
NetworkStatus internetStatus = [r currentReachabilityStatus];
Reachability *r1 = [Reachability reachabilityForLocalWiFi];
NetworkStatus internetStatus1 = [r1 currentReachabilityStatus];
Reachability *r2 = [Reachability reachabilityWithHostName:FTPURL];
NetworkStatus internetStatus2 = [r2 currentReachabilityStatus];
DLog(@"%d,%d,%d",internetStatus,internetStatus1,internetStatus2);
if(internetStatus != NotReachable && internetStatus1 != NotReachable && internetStatus2 != NotReachable)
{
return YES;
}
return NO;
}
Wi-Fi が利用可能な場合、3 つのステータスは必ず「到達可能」になります。Wi-Fi を手動でオフにすると (ネットワーク接続フラグがオフ)、3 つのステータスはすべて「NOTReachable」になります。
モデムの電源を切り、ワイヤレス ルーターを開いたままにすると (ネットワーク接続フラグがオン)。インターネットにアクセスできませんが、3 つのステータスはすべて「到達可能」のままです。これが発生する理由と、この UnReachable ステータスを検出する方法を知りたいですか?