如何获取用户的国家信息

Posted

技术标签:

【中文标题】如何获取用户的国家信息【英文标题】:How to get user's country information 【发布时间】:2011-02-17 17:42:02 【问题描述】:

基本上,我需要在应用程序启动时识别用户所在的国家/地区,并根据他/她的国家/地区在我的应用程序中启用或禁用基于位置的功能。在加载 RootViewController 之前,我需要尽快在应用程序委托中执行此操作。在 iPhone SDK 中是否有这样做的?

【问题讨论】:

“用户所在国家”的定义是什么?他们在地图上的当前位置?他们无线账单的邮寄地址? 【参考方案1】:

在应用运行时,您需要设备所在国家/地区的名称吗?

或者您可以使用设备正在使用的系统区域设置,例如 en_US 或 fr_CA 吗?

如果是后者,你可以:

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

那么currentLocaleID 将是"en_US""fr_CA" 或类似的。

否则,您需要使用 CoreLocation 和某种形式的反向地理编码器将您的纬度/经度转换为国家/地区名称。

MKReverseGeocoder 可以做到这一点,但服务条款规定您需要结合可能不适合您的 Google 地图来执行此操作。仅适用于 OS 3.0 及更高版本,请搜索 MKReverseGeocoder 的文档以获取更多信息。

我自己需要这个,最后在我们的服务器上使用设备 IP 地址在 php 中进行地理编码。它很简陋,但为我们提供了足够的细节来满足我们的需求。

查看此网络服务:http://ws.geonames.org/findNearby?lat=47.3&lng=9 它返回一个 XML 文档,其中包含国家和附近的地名,给定 lat/lng 对。

不过,这种方法依赖于具有活动数据连接的设备。

【讨论】:

不幸的是,语言环境不够好,因为我需要在应用程序运行时设备所在的国家/地区。我已经阅读了 MKReverseGeocoder API 的限制,这就是我寻找替代方案的原因。我想如果我在后台加载对用户隐藏的地图只是为了获取国家信息,Apple 可能会拒绝该应用程序。 无法在我的答案中添加另一个链接,但请查看:ws.geonames.org/findNearby?lat=47.3&lng=9 它将返回一个 XML 文档,其中包含国家/附近的地名(给定纬度/经度对)。 thanx hjd,我会检查一下,但我宁愿避免依赖外部资源,因为它会带来一系列全新的场景/问题。

以上是关于如何获取用户的国家信息的主要内容,如果未能解决你的问题,请参考以下文章

如何使用地名服务 api 而不是 html5 位置对象的东西获取国家/地区代码信息

如何在 iOS SDK 上通过给定的邮政编码 (ZIP) 获取国家/地区名称

如何使用 here.com API 从 IP 获取国家代码?

如何获取用户位置国家 [关闭]

Unity C#如何获取玩家的国家、城市或位置

如何使用他们的 GPS 服务获取用户的国家名称?