确定iPhone用户的国家
我需要在启动时确定用户所在的国家/地区,以用于iPhone应用程序。据推测,我将不得不打开位置服务并进行某种反向地理编码。如果可能,我真的不想使用第三方网络服务,还有其他建议可以从服务提供的位置来确定国家吗?确定iPhone用户的国家
最初,我只需要检查用户是否在美国境内,但这可能会在未来增加更多的国家。我了解,该位置不能总是确定,或者用户可能已关闭位置服务。基本上,我只需要知道用户是否被检测到在美国境内,以便关闭特定功能。
编辑:在进一步阅读,它看起来像MKReverseGeocoder将要走的路,除非我不希望在我的应用程序中显示任何地图,这意味着我不允许使用它。
如果你不想使用iPhone SDK提供的Google服务,难道你不能只存储美国的A边界坐标,并检查你是否在里面?
这里是在这种情况下 How can I determine whether a 2D Point is within a Polygon?
一个相关的问题。如果限制的目的是比用户体验等(例如,执行一些特定的美国法律complicance)的东西,即当用户无法我想说你需要一些更严格的检查(毕竟,用户会拒绝使用位置服务,否则他/她不会)?
一种这样的方法是进行IP查找,例如, http://www.maxmind.com/app/geoip_country
你可以尝试另一个窍门是检查运营商的MCC:
#import <CoreTelephony/CTTelephonyNetworkInfo.h>
#import <CoreTelephony/CTCarrier.h>
CTTelephonyNetworkInfo *netInfo = [[CTTelephonyNetworkInfo alloc] init];
CTCarrier *carrier = [netInfo subscriberCellularProvider];
NSString *mcc = [carrier mobileCountryCode];
的NSLocale对象,如[NSLocale systemLocale], and
[NSLocale autoupdatingCurrentLocale]返回`)的值为NSLocaleCountryCode。在Apple文档中查看它。
用户当然可以改变他们的语言环境? – 2010-06-16 05:00:57
区域设置只是配置。它与实际位置无关。 – 2015-01-20 11:24:32
这是用户设置,是的,但在很多情况下,这是程序员所期望的。例如,用户想要她的日期,时间和货币格式留她的首选区域设置,无论她是哪个国家在物理上,这取决于使用情况。 – 2015-03-31 17:08:40
NSLocale *locale = [NSLocale currentLocale];
NSString *countryCode = [locale objectForKey: NSLocaleCountryCode];
NSString *countryName = [locale displayNameForKey: NSLocaleCountryCode
value: countryCode];
用户是否可以自己更改语言环境,使其变得不可靠?此外,区域设置与手机的“语言”设置相同还是不同? – 2012-07-19 08:40:22
这可以由用户设置中>常规>国际>地区格式进行更改。有一个区域格式和一个语言设置。 – MonsieurDart 2013-04-10 22:55:16
并不是所有用户都使用真实的居住区域。应该谨慎使用。 – AlexeyVMP 2015-01-19 17:34:49
目的是限制功能,如果用户被发现在美国境内。如果用户关闭了位置服务,或者他们被发现在美国*,则功能不受限制。我知道这很容易解决,但这些都是我的要求 - 更偏向于功能受到限制,而不是每次都要求100%。 – 2010-06-15 11:15:16
我当然很乐意使用iPhone SDK提供的Google服务。有什么能够给我以后的东西吗? – 2010-06-15 11:15:42