Comment faire pour obtenir l'Accessibilité des Notifications dans iOS en arrière-plan lors de la suppression d'un réseau Wi-Fi?

Je suis à l'aide de l'Accessibilité avec succès pour déterminer l'état du réseau, et être notifié des changements (par exemple,L'accessibilité Guide pour iOS 4).

Ma question n'est pas comment obtenir de l'Accessibilité et de l'exécution, mais plutôt la suivante.

Mon AppDelegate gère l'Accessibilité des trucs. L'application reçoit des notifications ( kReachabilityChangedNotification ), tandis que l'application est en cours d'exécution, et lorsque l'application est en arrière-plan (applicationDidEnterBackground:).

L'app est conçu pour recharger la lecture d'un flux audio lorsqu'il constate que c'est perdu d'une connexion Wi-Fi, par exemple, Pour tester, j'ai activé le Wi-Fi activé et désactivé dans les Paramètres, et tout a fonctionné parfaitement. Dans le monde réel, des tests, j'ai souvent perdre la connectivité Wi-Fi quand je l'ai sortie la portée du point d'accès. J'ai trouvé que l'Accessibilité n'est pas de m'aider un peu trop dans ce cas. Je ne sais pas si c'est parce que l'Accessibilité des notifications n'est pas accordé lorsque l'écran est verrouillé, ou si l'Accessibilité n'est pas la poignée de la lente diminution du signal de plus en plus lointain, Wi-Fi, point d'accès, mais peu importe je ne peux pas comprendre pourquoi les essais du monde réel ne correspond pas au cas idéalisé.

C'est ce que mon code ressemble. J'ai d'abord mis en place pour recevoir les notifications, et commencer à écouter Accessibilité:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    //check for internet connection
    [[NSNotificationCenter defaultCenter] addObserver:self 
                                             selector:@selector(checkNetworkStatus:) 
                                                 name:kReachabilityChangedNotification object:nil];

    //Set up Reachability
    internetReachable = [[Reachability reachabilityForInternetConnection] retain];
    [internetReachable startNotifier];    

    ....

    return YES;
}

et puis, c'est la fonction qui répond aux changements de connectivité:

- (void)checkNetworkStatus:(NSNotification *)notice {
    //called after network status changes

    NetworkStatus internetStatus = [internetReachable currentReachabilityStatus];
    switch (internetStatus)
    {
        case NotReachable:
        {
            NSLog(@"The internet is down.");
            break;
        }
        case ReachableViaWiFi:
        {
            NSLog(@"The internet is working via WIFI");
            break;            
        }
        case ReachableViaWWAN:
        {
            NSLog(@"The internet is working via WWAN!");
            break;            
        }
    }    
}

Les notifications viennent à travers, même lorsque l'application est en arrière-plan, mais ils ne sont pas dans le monde réel analyses décrites ci-dessus.

Merci pour toute aide.

  • Avez-vous essayé une combinaison de reachabilityForInternetConnection et reachabilityForLocalWifi?
  • Avez-vous trouvé une solution pour cela? Je suis confronté à un problème similaire, et les solutions ne semblent pas aider ou ne sont pas ce que je cherche.
  • Je ne sais pas ce que j'ai résolu mon problème, que je n'ai pas besoin de travailler sur ce projet ces derniers temps. Avez-vous fait sûr que l'application est en cours d'exécution en arrière-plan avec une tâche en arrière-plan, par @Hurden de la recommandation?
  • Oui, c'était en effet la solution, mais avec un léger changement. Je vais ajouter une autre réponse au cas où quelqu'un a le même problème.
InformationsquelleAutor Tim Camber | 2012-03-21