1

私は単純な 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 では、ネットワークの状態自体が表示されます。それを再利用できれば、アプリケーションを介して可用性を確認するオーバーヘッドを排除できます。通知を介してそれを取得する新しい方法を見つけましたが、それでも詳細を取得できませんでした.

誰かがそれを行うための簡単な方法に出くわしたら、私と共有してください.

4

1 に答える 1

0

最も簡単な方法 (そして私が常に使用する方法) は、サーバーからリソースを要求することです。必ずキャッシュを禁止し、結果が返されるかどうかを確認してください。

于 2010-07-26T07:33:30.143 に答える