2009-10-26 15 views
11

mia app accede a Internet e voglio solo per rilevare se vi sia un collegamento sia tramite wifi o tramite rete dati vettore o noniPhone SDK rilevare rete Wifi e Carrier

Apple ha fatto un esempio per quel "raggiungibilità"

https://developer.apple.com/iphone/library/samplecode/Reachability/

Penso che sia solo rileva il wifi e non la rete portante

qualcuno può dirmi, che cosa è il migliore da fare per rilevare se c'è un collegamento (qualsiasi tipo di connessione)

Apprezzare il vostro aiuto!

+1

Questo è un po 'vecchio. C'è una versione più recente di Reachability di Tony Miller, che ho usato [qui] (https://github.com/tonymillion/Reachability) –

risposta

13

Questo campione è esattamente ciò di cui hai bisogno.

Vedere Reachability.m. ti dirà se hai qualche connessione e poi ti dirà che tipo di connessione hai.

+1

Per rispondere alla tua domanda in modo più specifico: il codice Reachability rileva * qualsiasi * tipo di connessione , non solo Wi-Fi. Tutto quello che devi fare è importare le classi di Reachability nel tuo progetto, quindi istanziare un oggetto Raggiungibilità e andare da lì. – Tim

9

L'esempio Reachability può essere eccessivo se si desidera solo rilevare se si è connessi o meno, e che tipo di connessione si sta utilizzando se si è connessi. In effetti, l'esempio contiene anche un codice che mostra come impostare e utilizzare i callback che notificano le modifiche di stato.

Per un frammento di codice sorgente di dirvi esattamente se si è connessi o no, e che tipo di connessione in uso, si consiglia di dare un'occhiata alla mia risposta a una domanda simile, postato here.

3

Una volta effettuata una richiesta a qualsiasi risorsa Web, l'iPhone utilizza qualsiasi connessione trovata, utilizza la rete wifi (come priorità più alta) e se la rete Wi-Fi non è collegata utilizza la rete di trasporto. Non ci sono impostazioni di codice che impediscono la rete del vettore.

Tutto quello che dovete fare:

  • Controllare il segnale al posto di test.
  • Controlla il link che stai cercando di raggiungere su Safari, per assicurarti che non sia la tua app che ha il problema.
  • Rivolgersi al supporto portante se il link non funziona su Safari (di sicuro l'utilizzo della rete carrier)
+0

questa risposta è per iampathik –

2

Queste tecniche sono utili, ma tenere a mente che il percorso del dispositivo a Internet potrebbe consistere di diversi diversi tipi di connessioni. Ad esempio, un iPhone o iPod touch potrebbe utilizzare il Wi-Fi per connettersi a un hotspot mobile, che a sua volta ha la sua connessione wireless 3G. Quindi non è sicuro presumere che la presenza di una connessione WiFi implichi una maggiore larghezza di banda rispetto al 3G.

0

Raggiungibilità (sia il codice di esempio di Apple, sia il codice simile di altre persone, e la sottostante SCNetworkReachability ti dirà che non c'è l'accesso a Internet, o che avrai accesso a Internet tramite WiFi, o che avrai accesso a Internet attraverso dati mobili.

Se si dispone di connessione Wi-Fi e dati mobili disponibili, vi dirà "Wi-Fi". non c'è modo di scoprire che i dati mobile è disponibile quando si dispone di connessione Wi-Fi. (si può facilmente scoprire che mobili i dati sono disponibili quando non è disponibile la connessione Wi-Fi. Non è possibile scoprire se la modalità Aereo è attivata (che sarebbe diversa da WiFi e dati mobili disattivati).

WiFi disponibile non garantisce che il download utilizzi dati WiFi e non mobili. Potresti avviare un download a casa, lasciare un minuto dopo, il WiFi scompare e iOS continuerà felicemente a scaricare tramite 3G. È possibile impostare un flag nella chiamata di download per disabilitare 3G. Il codice di errore sarà -1009 = Nessun accesso a Internet, nessuna menzione del fatto che il 3G sarebbe stato disponibile.

Usando CTTelephonyNetworkInfo è possibile scoprire che siete su un dispositivo che potrebbe hanno dati mobili (non un iPod Touch o iPad senza dati mobili, e c'è una SIM nel dispositivo).