Question

J'ai incorporé l'exemple d'Accessibilité d'Apple dans mon propre projet afin que je sache si j'ai une connexion réseau. Si je ne dispose pas d'une connexion réseau, je ne me préoccupe pas d'envoyer des requêtes. J'ai décidé de choisir l'implémentation de la notification d'état car il me semblait plus facile de mettre à jour l'accessibilité en arrière-plan et de disposer immédiatement des résultats actuels plutôt que de lancer une requête synchrone dès que je souhaite établir une connexion réseau.

Mon problème est que je commence à recevoir de faux négatifs lorsque je suis sur un réseau EDGE - le téléphone dispose d'une connectivité, mais l'application pense que ce n'est pas le cas. D'après ce que je comprends, vous ne recevez pas de notification lors d'une connexion EDGE. Je suppose donc que j'ai perdu et retrouvé la connexion à un moment donné. Redémarrer l'application est généralement suffisant pour voir la connexion réseau.

Ce n’est pas une solution optimale. Je me demandais donc si d’autres personnes avaient déjà rencontré ce problème et envisagé de trouver une solution.

(Je ne sais pas si cela s'applique également à la 3G; j'utilise un iPhone de première génération).

Était-ce utile?

La solution

Les notifications d'accessibilité ne semblaient pas non plus fiables pour moi, pour détecter le Wi-Fi. Donc, je me sers simplement de polling. Vérifier toutes les 5 secondes ne semble pas faire de mal.

- (void) checkReachability {
    BOOL connected = ([[Reachability sharedReachability] localWiFiConnectionStatus] == ReachableViaWiFiNetwork);

    // Do something...

    [self performSelector:@selector(checkReachability) withObject:nil afterDelay:5.0];
}

Autres conseils

Il existe un bel exemple d'accessibilité sur le net. ça marche merveilleusement bien: http://servin.com/iphone/iPhone-Network-Status.html

Mais vous voyez, quand j'essaie de l'utiliser à ma manière, il se contente de bombarder.

J'ai essayé de l'implémenter en utilisant:

NSString *sCellNetwork;     
 NSString *sNetworkReachable;  

if (flags & kSCNetworkFlagsReachable || flags & kSCNetworkReachabilityFlagsIsWWAN)

{do it} 

 else {
   Network fail alert; 
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top