2014-10-21 20 views
5

Le classi di Reachability del codice di esempio Raggiungibilità Apple sembrano essere abbastanza ritardate quando l'utente mette il dispositivo in modalità aereo. Vedo all'incirca una distanza di 5 secondi tra l'utente che passa alla modalità aereo e la notifica effettiva.Raggiungibile su iOS 8 in ritardo?

C'è un modo più rapido per ricevere una notifica? o un nuovo modo su questo sistema operativo?

+0

Cinque secondi è abbastanza buono, IMO – Undo

+1

Non abbastanza buono se si risponde alle chiamate di rete che iniziano a fallire prima mano. – cynistersix

risposta

0

Ho creato un campione che esegue il polling della connettività anziché fare affidamento sulla notifica. Quindi, semplicemente usando l'esempio Raggiungibilità e verificando la connettività, puoi determinare se sei ancora connesso.

- (NetworkStatus)currentReachabilityStatus 
{ 
    NSAssert(_reachabilityRef != NULL, @"currentNetworkStatus called with NULL SCNetworkReachabilityRef"); 
    NetworkStatus returnValue = NotReachable; 
    SCNetworkReachabilityFlags flags; 

    if (SCNetworkReachabilityGetFlags(_reachabilityRef, &flags)) 
    { 
     if (_alwaysReturnLocalWiFiStatus) 
     { 
      returnValue = [self localWiFiStatusForFlags:flags]; 
     } 
     else 
     { 
      returnValue = [self networkStatusForFlags:flags]; 
     } 
    } 

    return returnValue; 
} 

In questo modo è possibile stabilire quale stato di connettività è invece di sperare di ricevere la notifica in tempo.