Vérification de l’accessibilité de l’iPhone

J’ai trouvé plusieurs exemples de code pour faire ce que je voulais (vérifier l’accessibilité), mais rien ne semble être assez précis pour que je puisse l’utiliser. Je n’arrive pas à comprendre pourquoi ça ne veut pas jouer bien.

J’ai l’accessibilité.h / m dans mon projet, je le fais

#import  

Et j’ai le cadre ajouté. J’ai aussi:

 #import "Reachability.h" 

en haut du fichier .m dans lequel j’essaie d’utiliser l’accessibilité.

 Reachability* reachability = [Reachability sharedReachability]; [reachability setHostName:@"http://www.google.com"]; // set your host name here NetworkStatus remoteHostStatus = [reachability remoteHostStatus]; if(remoteHostStatus == NotReachable) {NSLog(@"no");} else if (remoteHostStatus == ReachableViaWiFiNetwork) {NSLog(@"wifi"); } else if (remoteHostStatus == ReachableViaCarrierDataNetwork) {NSLog(@"cell"); } 

Cela me donne toutes sortes de problèmes. Qu’est-ce que je fais mal? Je suis un bon codeur, j’ai juste un moment difficile quand vient le temps de déterminer ce qui doit être mis pour activer ce que je veux faire, peu importe si je veux savoir ce que je veux faire ou non. (Si frustrant)

Mise à jour: c’est ce qui se passe. Ceci est dans mon viewcontroller, que j’ai le

 #import  

et

 #import "Reachability.h" 

Mis en place avec. C’est ma partie la moins préférée de la programmation de loin. problèmes d’accessibilité http://sneakyness.com/reachability.png


FWIW, nous n’avons jamais fini par implémenter cela dans notre code. Les deux caractéristiques nécessitant un access à Internet (entrée dans le tirage au sort et achat du DVD) n’étaient pas des caractéristiques principales. Rien d’autre ne nécessitait un access Internet.

Au lieu d’append plus de code, nous définissons simplement l’arrière-plan des deux vues Internet sur un avis indiquant aux utilisateurs qu’ils doivent être connectés à Internet pour utiliser cette fonctionnalité. C’était dans le thème avec le rest de l’interface de l’application, et a été fait bien / avec goût. Ils n’en ont rien dit pendant le processus d’approbation, mais nous avons eu un appel téléphonique personnel pour vérifier que nous dissortingbuions des articles ayant réellement trait au film. Selon leur accord généralement vague, vous n’êtes pas autorisé à faire des loteries autrement.

Je pense aussi que cela adhère plus ssortingctement à leur idée “d’utiliser seulement des choses si vous en avez absolument besoin”.

Voici le lien iTunes vers l’application, EvoScanner.

Depuis votre capture d’écran, il semble que vous n’ayez pas ajouté Reachability à votre projet. Vous devez télécharger Reachability d’Apple:

https://developer.apple.com/library/content/samplecode/Reachability/Introduction/Intro.html

Et ajoutez les fichiers .h et .m à votre projet.

Mise à jour: Vous avez noté que vous avez l’accessibilité. Mais en regardant la version la plus récente, je peux voir pourquoi vous avez les erreurs que vous avez répertoriées – elles ont changé l’API et vous utilisez probablement un exemple de code que vous avez trouvé ailleurs. Essayer:

dans le fichier .h:

 //import Reachability class #import "Reachability.h" // declare Reachability, you no longer have a singleton but manage instances Reachability* reachability; 

dans le fichier .m:

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNetworkChange:) name:kReachabilityChangedNotification object:nil]; reachability = [Reachability reachabilityForInternetConnection]; [reachability startNotifier]; NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus]; if(remoteHostStatus == NotReachable) {NSLog(@"no");} else if (remoteHostStatus == ReachableViaWiFi) {NSLog(@"wifi"); } else if (remoteHostStatus == ReachableViaWWAN) {NSLog(@"cell"); } ..... - (void) handleNetworkChange:(NSNotification *)notice { NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus]; if(remoteHostStatus == NotReachable) {NSLog(@"no");} else if (remoteHostStatus == ReachableViaWiFi) {NSLog(@"wifi"); } else if (remoteHostStatus == ReachableViaWWAN) {NSLog(@"cell"); } } 
 [reachability setHostName:@"http://www.google.com"]; 

Attention! J’ai rencontré le problème qu’il est toujours “NotReachable” si le préfixe http: // est utilisé.

Raphael

Voici le bon code car il fonctionne pour moi aujourd’hui !!!

 [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(handleNetworkChange:) name: kReachabilityChangedNotification object: nil]; reachability = [Reachability reachabilityForInternetConnection]; [reachability startNotifier]; NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus]; if(remoteHostStatus == NotReachable) {NSLog(@"no");} else if (remoteHostStatus == ReachableViaWiFi) {NSLog(@"wifi"); } else if (remoteHostStatus == ReachableViaWWAN) {NSLog(@"cell"); } 

Avez-vous le code suivant n’importe où?

 [reachability startNotifier]; 

Si votre code d’accessibilité provient de l’exemple d’Apple, vous devez le faire avant qu’il puisse commencer à vous signaler les mises à jour du statut.

change ça

 reachability = [Reachability reachabilityForInternetConnection]; 

pour ça

 reachability = [[Reachability reachabilityForInternetConnection] retain];