私は単純な iphone アプリケーションを作成しており、そこでインターネットの可用性を確認する必要があります。これを確認するために、ほとんどのフォーラムは到達可能性クラスの使用を推奨しています。それに基づいて、次のコードを実装しました。
struct sockaddr_in zeroAddress;
bzero(&zeroAddress, sizeof(zeroAddress));
zeroAddress.sin_len = sizeof(zeroAddress);
zeroAddress.sin_family = AF_INET;
SCNetworkReachabilityRef defaultRouteReachability = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *)&zeroAddress);
SCNetworkReachabilityFlags flags;
BOOL didRetrieveFlags = SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags);
CFRelease(defaultRouteReachability);
if (!didRetrieveFlags) {
isInternetConnectionAvailable = NO;
}
BOOL isReachable = flags & kSCNetworkFlagsReachable;
BOOL needsConnection = flags & kSCNetworkFlagsConnectionRequired;
NSURL *testURL = [NSURL URLWithString:serviceEndPoint];
NSURLRequest *testRequest = [NSURLRequest requestWithURL:testURL cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:5.0];
[[[NSURLConnection alloc] initWithRequest:testRequest delegate:self] autorelease];
ただし、ネットワークステータスを取得するための簡単な代替方法が必要です。iphone では、ネットワークの状態自体が表示されます。それを再利用できれば、アプリケーションを介して可用性を確認するオーバーヘッドを排除できます。通知を介してそれを取得する新しい方法を見つけましたが、それでも詳細を取得できませんでした.
誰かがそれを行うための簡単な方法に出くわしたら、私と共有してください.