iOS - 不使用CLLocationManager确定用户的国家

12

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

有什么最好的方法可以实现这一点吗?是否有一些方法可以使用他们的IP地址?

只有当他们有运营商时,这种方法才有效:

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

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


由于用户可能处于飞行模式或未连接到网络,或者用户可能正在使用代理,因此无法保证您可以从网络中获取准确的信息。 - rmaddy
2个回答

1

1

你如何解决这个问题 - 如果我在家里的Wi-Fi上,我的IP是192.168.x.x,如果我在手机网络上,我的IP是10.174.x.x? - soleil
你说得对,你只会得到你的IP地址的垃圾信息 - 这只有在你是一个网站或其他什么东西的情况下才有效。我建议你尝试一些这里的答案来获取路由器本身的地址:https://dev59.com/bEvSa4cB1Zd3GeqPenvd?lq=1。 - Ben Pious
你的本地IP地址(例如:192.168.x.x)与你的外部IP地址不同。因此,如果你要使用IP地址获取用户的位置,你需要获取他的外部IP地址。 - Ahmad Baraka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接