确定iPhone用户的国家/地区

Ben*_*ams 26 iphone geolocation reverse-geocoding

对于iPhone应用程序,我需要在启动时确定用户所在的国家/地区.据推测,我将不得不打开位置服务并进行某种反向地理编码.如果可能的话,我真的不想使用第三方网络服务,是否有任何其他建议来确定服务提供的位置?

最初,我只需要检查用户是否在美国境内,但是将来可能会更改以添加更多国家/地区.我知道无法始终确定位置或用户可能已关闭位置服务.基本上,我只需要知道用户是否被检测到是在美国境内,以便关闭特定功能.

编辑:进一步阅读,它看起来像MKReverseGeocoder,除了我不希望在我的应用程序中显示任何地图,这意味着我不允许使用它.

zou*_*oul 35

您可以尝试的另一个技巧是检查运营商的MCC:

#import <CoreTelephony/CTTelephonyNetworkInfo.h>
#import <CoreTelephony/CTCarrier.h>

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

  • Apple的文档称`CTTelephonyNetworkInfo`仅提供有关提供SIM卡的运营商的信息.因此,无论您是否漫游,这段代码都会产生相同的结果? (6认同)
  • 当然,它只是一个额外的信息来源. (3认同)

小智 23

NSLocale *locale = [NSLocale currentLocale];
NSString *countryCode = [locale objectForKey: NSLocaleCountryCode];

NSString *countryName = [locale displayNameForKey: NSLocaleCountryCode
                         value: countryCode];
Run Code Online (Sandbox Code Playgroud)


Ben*_*ams 4

考虑到 MKReverseGeocoder 的限制,我看来实现我所追求的目标的唯一可行方法是使用第三方服务来执行反向地理编码。我选择使用GeoNames,因为它们似乎是标准选择。