2010-05-10 3 views
1

Fondamentalement, j'ai besoin d'identifier le pays de l'utilisateur au démarrage de l'application et activer ou désactiver une fonctionnalité basée sur la localisation dans mon application en fonction de son pays. Je dois le faire le plus rapidement possible dans le délégué de l'application avant le chargement du RootViewController. Y at-il de toute façon de le faire dans le SDK iPhone ??Comment obtenir les informations sur le pays de l'utilisateur

+0

Quelle est la définition de «pays de l'utilisateur»? Leur emplacement actuel sur la carte? L'adresse postale de leur facture sans fil? –

Répondre

0

Avez-vous besoin du nom du pays dans lequel le périphérique se trouve physiquement lorsque l'application est en cours d'exécution? Ou pouvez-vous vous débrouiller avec les paramètres régionaux du système que le périphérique utilise, tels que en_US ou fr_CA?

Dans ce dernier cas, vous pouvez:

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

Alors currentLocaleID serez "en_US" ou "fr_CA" ou similaire.

Sinon, vous devrez utiliser CoreLocation et une forme de Reverse Geocoder pour convertir votre lat/long en nom de pays. MKReverseGeocoder peut le faire mais les conditions d'utilisation indiquent que vous devez le faire en conjonction avec une carte Google qui ne vous convient pas. Uniquement disponible sur OS 3.0 et supérieur, recherchez dans la documentation MKReverseGeocoder pour plus d'informations.

J'avais besoin de cela moi-même et j'ai fini par faire du géocodage en PHP sur notre serveur, en utilisant l'adresse IP du périphérique. C'est rudimentaire, mais nous a donné assez de détails pour nos besoins.

Consultez ce service Web: http://ws.geonames.org/findNearby?lat=47.3&lng=9
Ce qui renvoie un document XML avec le pays et les noms de lieux proches, avec une paire latitude/longitude.

Cette approche repose cependant sur le périphérique ayant une connexion de données active.

+1

Malheureusement, les paramètres régionaux ne sont pas suffisants, car j'ai besoin du pays dans lequel se trouve l'appareil pendant que l'application fonctionne. J'avais lu sur cette limitation de l'API MKReverseGeocoder et c'est pourquoi je cherchais une alternative. Je suppose que si je charge une carte en arrière-plan cachée à l'utilisateur juste pour obtenir les informations du pays, Apple pourrait rejeter l'application. – ender

+0

Impossible d'ajouter un autre lien à ma réponse, mais vérifiez: http://ws.geonames.org/findNearby?lat=47.3&lng=9 Il va retourner un document XML avec pays/noms de lieux à proximité donné un lat/paire de lng. – hjd

+0

thanx hjd, je vais y jeter un coup d'œil, bien que je préférerais éviter de me fier à une ressource extérieure, car elle apporte avec elle un nouvel ensemble de scénarios/problèmes. – ender

Questions connexes