2013-07-11 16 views
11

Non ho bisogno di dati di posizione precisi, e non voglio che l'utente veda l'avviso "Questa app vuole determinare la tua posizione". Ho solo bisogno di determinare il paese dell'utente, supponendo che abbiano una connessione internet via rete o wi-fi.iOS - Determina il paese dell'utente senza usare CLLocationManager

Qual è il modo migliore per farlo? C'è un modo per usare il loro IP?

questo funzionerebbe solo se avessero un vettore:

CTTelephonyNetworkInfo *netInfo = [[CTTelephonyNetworkInfo alloc] init]; 
CTCarrier *carrier = [netInfo subscriberCellularProvider]; 
NSString *mcc = [carrier mobileCountryCode]; 

E NSLocale non è affidabile in quanto l'utente può cambiare nelle loro impostazioni del dispositivo. Non è possibile utilizzare l'impostazione della lingua del dispositivo per lo stesso motivo. Ho bisogno del paese in base a dove si trovano fisicamente.

+0

Dal momento che un utente potrebbe essere in modalità aereo o non è collegato a una rete, oppure l'utente potrebbe usare un proxy, non vi è alcuna garanzia che tu possa ottenere informazioni accurate dalla rete. – rmaddy

risposta

1

È possibile ottenere l'indirizzo IP dell'utente e utilizzare un database di geolocalizzazione per indovinare la loro posizione in base a ciò come descritto qui: https://en.wikipedia.org/wiki/IP_address_location. Se sei solo interessato alla regione, puoi probabilmente trovare alcuni dati nei registri Internet regionali (https://en.wikipedia.org/wiki/Regional_Internet_registry) per aiutarti, dato che controllano tutti gli indirizzi IP per una particolare regione.

+0

Come aggirare questo problema - Se sono a casa mia, il mio IP è 192.168.x.x, e se sono sulla mia rete cellulare il mio IP è 10.174.x.x? – soleil

+0

Hai ragione, ti stai solo spazzando via il tuo indirizzo IP - questo funzionerebbe solo se tu fossi un sito web o qualcosa del genere. Vorrei provare alcune delle risposte qui per ottenere l'indirizzo del router stesso: http://stackoverflow.com/questions/2113580/objective-c-how-to-fetch-the-router-address?lq=1. –

+0

L'indirizzo IP locale (ad es .: 192.168.x.x) è diverso dall'indirizzo IP esterno. Quindi, se hai intenzione di usare un indirizzo IP per ottenere la posizione dell'utente, devi ottenere il suo indirizzo IP esterno. –

Problemi correlati