2009-07-10 12 views
12

Tengo una función en mi aplicación de iPhone que, por motivos de negocios, solo debe mostrarse/estar disponible para los clientes en los EE. UU. Si quiero lanzar esta aplicación a tiendas de aplicaciones fuera de los EE. UU., ¿Cuál es la mejor manera de descubrir en qué país estoy sin confiar en las configuraciones definidas por el usuario, como el idioma y la configuración regional?Detectar en tiempo de ejecución de qué tienda de aplicaciones del país se descargó mi aplicación para iPhone?

En mi opinión, la solución ideal es que haya alguna propiedad en tiempo de ejecución que pueda decirme de qué país de App Store se descargó la aplicación, y puedo tomar las medidas correspondientes. Al revisar los documentos y buscar en la web, no se me ocurre nada en este departamento.

No espero que la solución sea 100% infalible para los usuarios que no están en el país del que dicen que son, pero lo más cerca posible sería agradable.

Supongo que una solución sería hacer una compilación separada para un nuevo producto en la App Store y tener dos versiones, una para EE. UU. Y otra para los demás, pero eso no parece ideal. Espero que pueda ser el mismo producto en la App Store para evitar cosas como la fragmentación de las críticas de los usuarios.

¡Gracias de antemano!

+0

Hola, ¿alguna vez encontró una solución elegante? Estamos en la misma situación pero tenemos una rama diferente en el código para cada país que no se escala muy bien. – Oli

+0

No, pero terminamos sin tener que preocuparnos por esto. No estoy seguro de si algo ha cambiado en el último año. –

+1

Las opiniones de los usuarios, las calificaciones y las clasificaciones ya están fragmentadas por tienda (país). Así que solo libera 2 aplicaciones, una con funciones de EE. UU. Y otra sin las otras tiendas. – hotpaw2

Respuesta

1

Es la configuración regional, o diferentes versiones para diferentes tiendas.

Para mí la opción de configuración regional parece ser la menor cantidad de trabajo y probablemente será correcta 95% de las veces ...

3

También pienso utilizando NSLocale sería la mejor solución posible para determinar el país del usuario.

Así es como se haría:

// Get user's country code based on currentLocale 
NSLocale *locale = [NSLocale currentLocale]; 
NSString *countryCode = [locale objectForKey: NSLocaleCountryCode]; 

if ([countryCode isEqualToString:@"US"]){ 
    // US Only 
} 

Sin embargo, ya que no hay garantía de que el usuario no va a cambiar sus ajustes internacionales, es posible que tenga más remedio que liberar aplicaciones por separado, uno para un EE.UU. audiencia y otra para una internacional.

1

La pregunta es muy antigua, pero dado que otros pueden tener la misma consulta, estoy incumpliendo :) Dado que no es 'sensiblemente' posible a través de la recuperación local, un mecanismo sería a través del registro de clientes. En el formulario de registro, puede preguntar al país donde se están registrando y tomar desde allí ...

Cuestiones relacionadas