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

sol*_*eil 12 location ip-address cllocationmanager ios nslocale

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

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

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

CTTelephonyNetworkInfo *netInfo = [[CTTelephonyNetworkInfo alloc] init];
CTCarrier *carrier = [netInfo subscriberCellularProvider];
NSString *mcc = [carrier mobileCountryCode];
Run Code Online (Sandbox Code Playgroud)

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

Ben*_*ous 1

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