2016-02-12 30 views
5

Sto creando casi di errore per le mie chiamate API e vorrei verificare una condizione quando una connessione Internet non è disponibile.Raggiungibilità vs risposta NSURLSession per rilevare la connessione Internet

dataTaskWithRequest sembra gestirlo correttamente e restituisce un NSError con codice -1009 con una descrizione di nessuna connessione Internet. Non devo aspettare che la richiesta scada.

In quali casi, invece, desidero utilizzare il Reachability Framework? Grazie

+0

yamski @ fa la mia risposta ti ha aiutato o bisogno di più aiuto –

+0

@RohitKP, mi dispiace non ha aiutato, ma mi portano alla soluzione corretta. – yamski

risposta

12

Ho fatto un po 'di ricerche e ho trovato la mia risposta nei documenti Apple.

La procedura consigliata è quella di tentare la connessione. Se c'è un problema con la connessione, ti dà un oggetto NSError che dovresti usare per testare la connettività.

Apple consiglia di utilizzare Raggiungibilità solo come metodo per diagnosticare gli errori e risolvere ulteriormente i problemi noti. Sembra che si dovrebbe usare solo la raggiungibilità per rilevare quando la rete torna online dopo un errore.

"tentare sempre di stabilire una connessione. Non tentare di indovinare se il servizio di rete è disponibile, e non memorizzare nella cache che la determinazione.

Se una connessione non riesce, utilizzare l'API SCNetworkReachability per aiutare a diagnosticare la causa del fallimento."

fonte: https://developer.apple.com/library/ios/documentation/NetworkingInternetWeb/Conceptual/NetworkingOverview/WhyNetworkingIsHard/WhyNetworkingIsHard.html#//apple_ref/doc/uid/TP40010220-CH13-SW3

"Quando tutta l'operazione viene completata, l'oggetto NSURLSession chiama il metodo del delegato URLSession:task:didCompleteWithError: sia con un oggetto errore o nulla (se l'operazione completata con successo)

Se l'operazione non è riuscita,. la maggior parte delle app dovrebbe riprovare la richiesta fino a quando l'utente annulla il download o il server restituisce un errore che indica che la richiesta non avrà mai esito positivo, tuttavia la tua app non dovrebbe riprovare immediatamente, ma dovrebbe utilizzare API di raggiungibilità per determinare se il server è raggiungibile e dovrebbe fare una nuova richiesta solo quando riceve una notifica che la raggiungibilità è cambiata. "

fonte:

https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/URLLoadingSystem/NSURLSessionConcepts/NSURLSessionConcepts.html