2010-09-24 15 views

Répondre

95

J'ai implémenté l'accessibilité comme ceci. Téléchargez https://developer.apple.com/library/content/samplecode/Reachability/Introduction/Intro.html et ajoutez Reachability.h et .m à votre projet. Ajoutez l'infrastructure SystemConfiguration à votre projet. #import "Reachability.h" où vous voulez l'utiliser. Utilisez ce code.

-(BOOL)reachable { 
    Reachability *r = [Reachability reachabilityWithHostName:@"enbr.co.cc"]; 
    NetworkStatus internetStatus = [r currentReachabilityStatus]; 
    if(internetStatus == NotReachable) { 
     return NO; 
    } 
    return YES; 
} 

Lorsque vous voulez vérifier ... joignabilité

if ([self reachable]) { 
    NSLog(@"Reachable"); 
} 
else { 
    NSLog(@"Not Reachable"); 
} 

Voici le projet exemple que je fait. http://dl.dropbox.com/u/3656129/ReachabilityExample.zip

+0

Merci! Ça a bien marché. – esqew

+0

Hey, j'utilise une version de ce code, et son fonctionnement bien. Toutes les autres informations que je trouve sur Internet semblent utiliser les notifications, et pour atteindre WifiReach, InternetReach et Host. Cela semble être une façon beaucoup plus propre d'aller. Y at-il un inconvénient que je ne vois pas? – averydev

+0

Non. Pour autant que je sache. Assurez-vous simplement que l'hôte que vous vérifiez est en place et n'est pas bloqué. – enbr

2

Je pense que la meilleure façon de vérifier la disponibilité de l'adresse de l'hôte consiste à vérifier les résultats de la requête NSURL.

NSURLRequest *theRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:reqURL]]; 
NSURLResponse *resp = nil; 
NSError *error = nil; 
NSData *response = [NSURLConnection sendSynchronousRequest: theRequest returningResponse: &resp error: &error]; 
NSString *responseString = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding]; 

L'utilisation de ce morceau de code, si votre appareil ne peut pas atteindre l'URL fournie, il fournit une sortie à la variable d'erreur, si elle peut accéder à la demande d'URL, l'erreur est nulle.

L'accessibilité donne une sortie positive même si les paquets d'URL peuvent être acheminés depuis votre appareil et n'atteignent jamais le serveur hôte.

+0

Typiquement, vous feriez simplement une demande HEAD si vous vouliez seulement vérifier qu'une ressource est disponible. Si vous ne le téléchargez que d'une manière ou d'une autre, alors essayez de le télécharger. – hooleyhoop