Domanda

la mia app accede a Internet e voglio solo rilevare se esiste una connessione tramite Wi-Fi o tramite la rete dati dell'operatore oppure no

apple ha fatto un esempio per quella "raggiungibilità"

https://developer.apple.com/iphone/library/samplecode/ raggiungibilità /

penso che rilevi solo il wifi e non la rete dell'operatore

qualcuno può dirmi, qual è il meglio da fare per rilevare se c'è una connessione (qualsiasi tipo di connessione)

Apprezzo il tuo aiuto!

È stato utile?

Soluzione

Questo esempio è esattamente ciò di cui hai bisogno.

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

Altri suggerimenti

L'esempio di raggiungibilità potrebbe essere eccessivo se si desidera solo rilevare se si è connessi o meno e quale 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 i cambiamenti di stato.

Per uno snippet di codice sorgente che ti dice esattamente se sei connesso o meno e che tipo di connessione stai usando, potresti dare un'occhiata alla mia risposta a una domanda simile, pubblicata qui .

Una volta effettuata una richiesta a qualsiasi risorsa Web, l'iPhone utilizza qualsiasi connessione trovata, utilizza il wifi (come priorità più alta) e se il wifi non è connesso utilizza la rete di telefonia mobile. Non ci sono impostazioni di codice che impediscono la rete dell'operatore.

Tutto quello che devi fare:

  • Controlla il segnale nel luogo del test.
  • Controlla il link che stai cercando di raggiungere su Safari, per assicurarti che non sia la tua app ad avere il problema.
  • Contatta l'assistenza del tuo operatore se il collegamento non funziona su Safari (utilizzando sicuramente la rete del gestore)

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

Raggiungibilità (sia il codice di esempio di Apple, sia il codice simile di altre persone, e il sottostante SCNetworkReachability ti diranno che non c'è accesso a Internet o che avrai accesso a Internet tramite WiFi o che avrai accesso a Internet tramite dispositivo mobile dati.

Se disponi di dati WiFi e mobili disponibili, ti verrà comunicato "WiFi". Non c'è modo di scoprire che i dati mobili sono disponibili quando si dispone di WiFi. (Puoi facilmente scoprire che i dati mobili sono disponibili quando non c'è WiFi). Non è possibile scoprire se la modalità aereo è attivata (che sarebbe diversa da WiFi e dati mobili disattivati).

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

Usando CTTelephonyNetworkInfo puoi scoprire che sei su un dispositivo che potrebbe avere dati mobili (non un iPod Touch o iPad senza dati mobili e che c'è una SIM nel dispositivo).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top