Apple a été assez gentil pour créer un échantillon complet pour nous. Il est appelé Reachability (Apple link). Voici l'essentiel de celui-ci:
Dans .h fichier:
// 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 == ReachableViaWiFiNetwork)
{
NSLog(@"wifi");
}
else if (remoteHostStatus == ReachableViaCarrierDataNetwork)
{
NSLog(@"cell");
}
.....
- (void) handleNetworkChange:(NSNotification *)notice
{
NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus];
if(remoteHostStatus == NotReachable)
{
NSLog(@"no");
}
else if (remoteHostStatus == ReachableViaWiFiNetwork)
{
NSLog(@"wifi");
}
else if (remoteHostStatus == ReachableViaCarrierDataNetwork)
{
NSLog(@"cell");
}
}
je pourrais ai pas été spécifique avec ma question assez. Donc, je vais les détails ici. Je garde ma connexion de socket XMPP en vie en arrière-plan, je ne la déconnecte pas donc quand l'application est ramenée au premier plan, je peux juste l'utiliser à nouveau, et aucune reconnexion n'est nécessaire. Maintenant, lorsque l'utilisateur change de réseau, comme Wi-Fi A à Wi-Fi B, la connexion par socket est maintenant invalide. Lorsque l'application est en arrière-plan, les notifications d'accessibilité ne fonctionnent pas. Il n'y a pas d'exécution en arrière-plan dans mon application, donc je suppose, Reachability n'est pas vraiment la réponse à cela. – jakerz
La solution que j'ai trouvée pour cela est en utilisant le BSSID du réseau, et l'enregistrer quand je mets l'application en arrière-plan, puis quand je mets l'application au premier plan, je vérifie le BSSID actuel, et si ce n'est pas la même chose renouveler la connexion socket. – jakerz