39 votes

vérification de l'accessibilité de l'iPhone

J'ai trouvé plusieurs exemples de code pour faire ce que je veux (à vérifier pour l'accessibilité), mais aucune ne semble être assez exact pour moi. Je ne peux pas comprendre pourquoi cela ne veut pas jouer gentil.

J'ai l'accessibilité.h/m dans mon projet, je suis en train de faire

#import <SystemConfiguration/SystemConfiguration.h>

Et j'ai le cadre ajoutée. J'ai aussi:

#import "Reachability.h"

en haut de l' .m dans laquelle je suis en train d'utiliser la joignabilité.

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"); }

Ce qui me donne toutes sortes de problèmes. Ce que je fais mal? Je suis un bon codeur, je viens d'avoir un moment difficile lorsque vient le temps de déterminer ce qui doit être mis où activer ce que je veux faire, peu importe si je veux savoir ce que je veux faire ou pas. (Très frustrant)

Mise à jour: C'est ce qu'il se passe. C'est à mon viewcontroller, que j'ai l'

#import <SystemConfiguration/SystemConfiguration.h>

et

#import "Reachability.h"

mis en place avec. C'est ma préférée au moins une partie de la programmation de loin.reachability problems


FWIW, nous n'avons jamais fini de mise en œuvre dans notre code. Les deux éléments qui ont requis l'accès à internet (de l'inscription au concours, et en achetant le dvd), n'étaient pas caractéristiques principales. Rien d'autre requis l'accès à internet.

Au lieu d'ajouter plus de code, nous venons de définir l'arrière-plan à la fois de point de vue internet à un avis disant les utilisateurs, il doit être connecté à internet pour utiliser cette fonctionnalité. C'était dans le thème avec le reste de l'interface d'application, et a été bien fait/aménagées avec goût. Ils n'ont rien dit à ce sujet au cours du processus d'approbation, cependant nous avons reçu un appel téléphonique personnel pour vérifier que nous étions loin de donner les éléments qui en fait portaient sur le film. Selon leur habitude vague d'accord, vous n'êtes pas autorisé à avoir des tirages autrement.

Je pense aussi que cela adhère plus strictement à leurs "utiliser uniquement des choses, si vous avez absolument besoin d'eux" ideaology ainsi.

Voici le lien iTunes pour l'application, EvoScanner.

65voto

À partir de votre capture d'écran, il me semble que vous n'avez pas l'Accessibilité ajouté à votre projet. Vous devez télécharger l'Accessibilité d'Apple:

http://developer.apple.com/iphone/library/samplecode/Reachability/index.html

Et ajouter à la fois .h et .m des fichiers à 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 énumérés - ils changé l'API, et vous êtes probablement en utilisant les exemples de code que vous avez trouvé quelque part d'autre. Essayez:

dans .h fichier:

//import Reachability class
#import "Reachability.h"

// declare Reachability, you no longer have a singleton but manage instances
Reachability* reachability;

dans .m fichier:

[[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"); }
}

29voto

Raphael Schaad Points 791
 [reachability setHostName:@"http://www.google.com"];
 

Attention! J'ai rencontré le problème que c'est toujours "NotReachable" si le préfixe http: // est utilisé.

Raphaël

7voto

nikoz Points 216

Voici le bon code car cela 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"); }
 

3voto

Kevlar Points 3988

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 de statut.

-3voto

mhrrt Points 491

change ça

 reachability = [Reachability reachabilityForInternetConnection];
 

pour ça

 reachability = [[Reachability reachabilityForInternetConnection] retain];
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X