Je crée une application iphone simple et là j'ai besoin de vérifier la disponibilité d'Internet. Pour vérifier cela, la plupart des forums recommandés pour utiliser la classe d'accessibilité. Sur cette base, j'ai implémenté le code suivant.Existe-t-il une méthode alternative pour vérifier la disponibilité du réseau dans l'iPhone au lieu de l'accessibilité du service?
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];
Cependant, je souhaite avoir une méthode alternative simple pour obtenir l'état du réseau. Dans iphone, il affiche l'état du réseau lui-même, si je peux le réutiliser, alors la surcharge de vérification de la disponibilité via mon application peut être éliminée. J'ai trouvé une nouvelle façon de l'obtenir à travers les notifications, mais je ne pouvais pas obtenir plus de détails à ce sujet.
Si quelqu'un trouve une méthode simple pour y arriver, n'hésitez pas à partager avec moi.