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

Posted

技术标签:

【中文标题】iOS - 在不使用 CLLocationManager 的情况下确定用户所在的国家/地区【英文标题】:iOS - Determine User's country without using CLLocationManager 【发布时间】:2013-07-09 02:39:15 【问题描述】:

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

最好的方法是什么?有什么方法可以使用他们的 IP 吗?

这只有在他们有运营商的情况下才有效:

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

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

【问题讨论】:

由于用户可能处于飞行模式或未连接到网络,或者用户可能正在使用代理,因此无法保证您可以从网络中获得准确的信息。 【参考方案1】:

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

【讨论】:

您将如何解决这个问题 - 如果我在家里的 Wi-Fi 上,我的 IP 是 192.168.xx,如果我在手机网络上,我的 IP 是 10.174.xx? 你是对的,你的 ip 地址只会得到垃圾——这只有在你是网站或其他东西的情况下才有效。我会在这里尝试一些答案来获取路由器本身的地址:***.com/questions/2113580/…。 您的本地 IP 地址(例如:192.168.x.x)与您的外部 IP 地址不同。所以如果你要使用IP地址来获取用户的位置,你需要获取他的外部IP地址。【参考方案2】:

参考这个网址How can whatsapp know country code upon first run on iphone.. 希望这个问题和我给你的网址中的问题对你有用

【讨论】:

以上是关于iOS - 在不使用 CLLocationManager 的情况下确定用户所在的国家/地区的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在不使用 iOS SDK 的情况下集成 Facebook 登录?

如何在不使用 iOS 中的 UITableViewDelegate 方法的情况下获取选择的 UITableViewCell

如何在不更新 IOS 应用程序的情况下使用 Azure 通知中心

如何等到当前位置对话框回答运行方法?

在 iOS 8 中如何在不使用自动布局的情况下布局 UITableViewCell?

在不使用 alpha 的情况下使用 UISegmentedControl 在视图 ios 之间切换?