2010-06-11 19 views
12

Sto scrivendo un'app per la guida turistica che scaricherà grandi database (60meg) potenzialmente oltreoceano, con il codice di raggiungibilità che posso dire quando un host è raggiungibile via wifi o 3g MA sono preoccupato che se per qualche motivo il wifi interruzioni di connessione per un minuto o giù di lì poichè alcune connessioni DSL sono in grado di fare a volte l'iPhone passerà in modo trasparente a 3G e senza rendersi conto che potrei essere tormentare qualcuno con bollette telefoniche all'estero!Posso impedire a iPhone di utilizzare 3G in qualsiasi circostanza?

Quindi mi chiedo se qualcuno ha qualche esperienza, in caso di tale interruzione della connettività wifi (il wifi funziona ancora ma è la connessione alla rete è inattivo) sarebbe il codice di raggiungibilità report ReachableViaWWAN? Quindi potrei aspettare che il mio codice di download ritorni, controllare come l'host è attualmente raggiungibile e se è tramite 3g posso abortire?

E 'possibile selezionare quale tipo di connessione posso usare in esclusiva con 3g o wifi?

+3

È bello vedere uno sviluppatore interessato a non fregare i suoi utenti. Avere un upvote – samoz

+1

Se si ha il controllo su quale rete utilizzare, è possibile impostarla come impostazione configurabile dall'utente. Alcune persone potrebbero non occuparsi del ritorno al 3G quando necessario (ad es. Hanno il nuovo piano da 2 GB e non si preoccupano di scaricare 60 MB). – Jeff

+1

È progettato per essere configurabile dall'utente, ma devo avere un qualche modo di implementarlo se dicono "no 3g per i download". – dageshi

risposta

0

Sì, in Impostazioni-> Generale-> Rete, è possibile spegnere 3G. Ma l'iphone continuerà a utilizzare cellulari non 3G.

In alternativa, quando viaggio all'estero, ho messo l'iPhone in modalità aereo e poi acceso il Wi-Fi manualmente.

+0

Penso che l'OP chieda se possono disabilitare i dati 3G a livello di programmazione dall'interno dell'app, come ha fatto l'app Skype. –

+0

OK, non era chiaro, ma in seconda lettura penso che tu abbia ragione. –

+0

Sì, ma grazie per quello non sapevo che potevi attivare la connessione wifi durante la modalità aereo. – dageshi

5

Se si guarda nell'esempio Reachability, in Reachability.h, esiste una costante definita come "kReachabilityChangedNotification". Se chiedi di essere informato delle modifiche, ammesso che funzioni come sembra, puoi interrompere la connessione quando scende al livello 3G.

+0

Sì dalla lettura su questo sembra l'unico modo. Solo un sacco di debug per testarlo funziona come immagino credo. – dageshi

1

In Impostazioni-> Generale-> Rete c'è "Roaming dati". Ciò consente di disattivare il roaming su altre reti di dati quando si viaggia all'estero. L'utente ha già la possibilità di scegliere se consentire costose connessioni 3G durante il viaggio.

+1

ahhh o.k che potrebbe essere utile. – dageshi

+0

hai scommesso, lo tengo sempre da quando sono vicino al confine – progrmr

0

No; IP in stile Unix non funziona così. Usare il codice di raggiungibilità farà la cosa giusta, ma c'è ancora la possibilità di inviare alcuni pacchetti su 3G prima di gestire la notifica.

Probabilmente è ragionevole presumere che gli utenti che non disattivano il "roaming dati" lo faranno molto rapidamente. D'altra parte, molti utenti non avranno piani internet illimitati.

Un'opzione è di visualizzare qualcosa come "Non connesso via Wi-Fi, vuoi scaricare molti dati sulla rete cellulare? Potrebbe esserti addebitata." e conservarlo in un ambiente.

+0

FYI, AT & T si sta muovendo verso piani dati limitati, che sono meno costosi se si rimane sotto 2G al mese (non mi avvicino mai da nessuna parte, me stesso). Al momento i conti illimitati sono in Grandfather, ma i nuovi account avranno limiti 1G o 2G, con $ 10/G dopo e un limite di costi per il mese. –

Problemi correlati