ver uso tienes suscripcion salud puedo pudo porque periodo para moviles los limitar funciona datos consumo configurar como celulares app aplicaciones agarra actual activar iphone geolocation reverse-geocoding

uso - Determinar el país del usuario del iPhone



no se pudo activar la red de datos celulares no tienes suscripcion (5)

Dadas las restricciones de MKReverseGeocoder, parece que la única forma viable para lograr lo que estoy buscando es usar un servicio de terceros para realizar una geocodificación inversa. He elegido ir con GeoNames ya que parecen ser la opción estándar.

Necesito determinar en el inicio en qué país está un usuario, para una aplicación de iPhone. Probablemente tendré que activar los servicios de ubicación y hacer algún tipo de geocodificación inversa. Realmente no quiero utilizar un servicio web de terceros si es posible, ¿hay alguna otra sugerencia para determinar el país a partir de qué servicios de ubicación proporciona?

Inicialmente, solo necesito comprobar si el usuario está dentro de los Estados Unidos o no, pero esto puede cambiar en el futuro para agregar más países. Entiendo que la ubicación no siempre se puede determinar o que el usuario puede tener desactivados los servicios de ubicación. Básicamente, solo necesito saber si se detecta que el usuario está dentro de los EE. UU. Para desactivar una función específica.

EDITAR: En lecturas adicionales, parece que MKReverseGeocoder sería el camino a seguir, excepto que no deseo mostrar ningún mapa en mi aplicación, lo que significa que no puedo usar esto.


El objeto NSLocale, como el devuelto por [NSLocale systemLocale], and [NSLocale autoupdatingCurrentLocale] `) contiene el valor NSLocaleCountryCode. Compruébalo en la documentación de Apple.


Otro truco que puedes probar es verificar el MCC del operador:

#import <CoreTelephony/CTTelephonyNetworkInfo.h> #import <CoreTelephony/CTCarrier.h> CTTelephonyNetworkInfo *netInfo = [[CTTelephonyNetworkInfo alloc] init]; CTCarrier *carrier = [netInfo subscriberCellularProvider]; NSString *mcc = [carrier mobileCountryCode];


Si no desea utilizar los servicios de Google proporcionados por el iPhone SDK, ¿no podría simplemente almacenar las coordenadas de los límites de los EE. UU. De A y verificar si está dentro o no?

Aquí hay una pregunta relevante en ese caso ¿Cómo puedo determinar si un punto 2D está dentro de un polígono?

Si el propósito de la limitación es algo distinto a la experiencia del usuario (por ejemplo, para hacer cumplir la conformidad con alguna ley específica de los Estados Unidos), es decir, cuando el usuario no puede ser tratado, diría que necesita una verificación más rigurosa (después de todo, el el usuario simplemente rechazaría el uso de los servicios de ubicación, de lo contrario, ¿no lo haría?).

Uno de estos enfoques sería realizar una búsqueda de IP, por ejemplo, http://www.maxmind.com/app/geoip_country


NSLocale *locale = [NSLocale currentLocale]; NSString *countryCode = [locale objectForKey: NSLocaleCountryCode]; NSString *countryName = [locale displayNameForKey: NSLocaleCountryCode value: countryCode];