Question

Je l'ai trouvé plusieurs exemples de code pour faire ce que je veux (vérifier joignabilité), mais aucun ne semble être assez exacte pour être utile pour moi. Je ne peux pas comprendre pourquoi cela ne veut pas jouer agréable.

Je le reachability.h / m dans mon projet, je fais

#import <SystemConfiguration/SystemConfiguration.h>

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

#import "Reachability.h"

au sommet du .m dans lequel 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"); }

me donne toutes sortes de problèmes. Qu'est-ce que je fais mal? Je suis un codeur bien, j'ai juste un moment difficile quand vient le temps de comprendre ce qui doit être mis où pour permettre ce que je veux faire, peu importe si je veux savoir ce que je veux faire ou non. (Frustrant)

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

#import <SystemConfiguration/SystemConfiguration.h>

et

#import "Reachability.h"

mis en place avec. Ceci est mon moins une partie préférée de la programmation de loin joignabilité
(source: sneakyness.com )


FWIW, on n'a jamais fini par mettre en œuvre cela dans notre code. Les deux caractéristiques qui nécessitent un accès à Internet (en entrant les tirages au sort, et l'achat du DVD), ne sont pas caractéristiques principales. Rien d'autre accès Internet requis.

Au lieu d'ajouter plus de code, nous venons de mettre l'arrière-plan des deux vues sur Internet à un avis indiquant aux utilisateurs qu'ils doivent être connectés à Internet pour utiliser cette fonctionnalité. Il était dans le thème avec le reste de l'interface de l'application, et a été bien fait / avec goût. Ils ont dit rien au cours du processus d'approbation, mais nous avons reçu un appel téléphonique pour vérifier que nous donnions suite des articles qui en fait le film portait sur. Selon leur accord généralement vagues, vous n'êtes pas autorisé à avoir tirages au sort autrement.

Je pense aussi cela adhère plus strictement à leur « utiliser uniquement des choses si vous avez absolument besoin de les » ideaology aussi bien.

Voici le lien iTunes pour l'application, EvoScanner.

Était-ce utile?

La solution

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

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

Et ajouter à la fois .h et les fichiers .m à votre projet.

Mise à jour: Vous avez noté que vous avez joignabilité. Mais en regardant la version la plus récente, je ne vois pas pourquoi vous avez les erreurs que vous avez énumérés - ils ont changé l'API et que vous utilisez probablement un exemple de code que vous avez trouvé un autre endroit. Essayez:

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

Autres conseils

[reachability setHostName:@"http://www.google.com"];

Attention! Je rencontrais le problème qu'il est toujours « NotReachable » si le http: //. Préfixe est utilisé

Raphaël

Voici le bon code comme ça marche 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 est joignabilité de l'exemple de la pomme, alors vous devez le faire avant de pouvoir commencer à vous rapports des mises à jour de statut.

modifier cette

reachability = [Reachability reachabilityForInternetConnection];

à cette

reachability = [[Reachability reachabilityForInternetConnection] retain];
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top