iOS - 在不使用CLLocationManager的情况下确定用户的国家/地区

时间:2013-07-11 00:05:51

标签: ios location ip-address cllocationmanager nslocale

我不需要精确的位置数据,我也不希望用户看到"此应用想要确定您的位置"警报。我只需要确定用户的国家/地区,假设他们通过网络或Wi-Fi连接互联网。

最好的方法是什么?有没有办法使用他们的IP?

这只有在有承运人的情况下才有效:

CTTelephonyNetworkInfo *netInfo = [[CTTelephonyNetworkInfo alloc] init];
CTCarrier *carrier = [netInfo subscriberCellularProvider];
NSString *mcc = [carrier mobileCountryCode];

并且NSLocale不可靠,因为用户可以在其设备设置中更改它。出于同样的原因,无法使用设备的语言设置。我需要根据他们所在的国家/地区来定位。

2 个答案:

答案 0 :(得分:1)

您可以获取用户的IP地址,并使用地理位置数据库根据此处所述的位置猜测其位置:https://en.wikipedia.org/wiki/IP_address_location。如果您只关心区域,您可以在区域互联网注册管理机构(https://en.wikipedia.org/wiki/Regional_Internet_registry)网站上找到一些数据来帮助您,因为它们可以控制特定区域的所有IP地址。

答案 1 :(得分:1)

请参阅此网址How can whatsapp know country code upon first run on iphone .. 希望这个问题和网址中的问题我给你的作品