Pergunta

Basicamente, preciso identificar o país do usuário na inicialização do aplicativo e ativar ou desativar um recurso baseado em localização no meu aplicativo com base em seu país. Preciso fazer isso o mais rápido possível no delegado do aplicativo antes do carregamento do rootViewController. Existe alguma maneira de fazer isso no iPhone SDK ??

Foi útil?

Solução

Você precisa do nome do país em que o dispositivo está fisicamente localizado enquanto o aplicativo está em execução?

Ou você poderia se contentar com o local do sistema que o dispositivo está usando como en_us ou fr_ca?

Se este último, você pode:

NSLocale *currentUsersLocale = [NSLocale currentLocale];  
NSString *currentLocaleID = [currentUsersLocale localeIdentifier];`

Então currentLocaleID vai ser "en_US" ou "fr_CA" ou similar.

Caso contrário, você precisará usar o CoreLocation e alguma forma de geocoder reverso para converter seu LAT/Long em um nome de país.

O MKReverseGeocoder pode fazer isso, mas os termos de serviço dizem que você precisa fazer isso em conjunto com um mapa do Google que pode não se adequar a você. Disponível apenas no OS 3.0 e acima, pesquise a documentação para MkReverseGeocoder para mais informações.

Eu mesmo precisava disso e acabei fazendo geocodificação no PHP em nosso servidor, usando o endereço IP do dispositivo. É rudimentar, mas nos deu detalhes suficientes para nossas necessidades.

Confira este serviço da web: http://ws.geonames.org/findnearby?lat=47.3&lng=9
Que devolve um documento XML com nomes de lugares do país e do local próximo, com um par Lat/LNG.

Essa abordagem depende do dispositivo ter uma conexão de dados ativa.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top