有没有办法让我检测用户是否在美国而不询问他们的位置?例如,当我在我的计算机上访问Fandango时,它知道我所在的县和州只是基于我的WiFi.
如果我有一台设备,也许是没有GPS的iPod Touch,我想验证它是在美国,它们是连接到WiFi …或者如果我有一台iPhone并且它已连接到3G和我想确保用户在美国,有没有一种方法我可以检查该信息而没有一点警报视图“__想要使用您当前的位置”?我不需要确切的坐标,我只需要确认这些用户是在美国(包括夏威夷和阿拉斯加州)……当地?
解决方法
我首先会尝试检查操作符的
Mobile Country Code.它会告诉您用户的移动电话服务提供商的数字移动国家/地区代码,除非他们切换到其他国家/地区的服务提供商,否则用户无法更改.
#import <CoreTelephony/CTTelephonyNetworkInfo.h> #import <CoreTelephony/CTCarrier.h> CTTelephonyNetworkInfo *netInfo = [[CTTelephonyNetworkInfo alloc] init]; CTCarrier *carrier = [netInfo subscriberCellularProvider]; NSString *mcc = [carrier mobileCountryCode];
这当然不适用于未连接到移动操作符(iPod Touch,某些iPad等)的设备.因此,作为后退,我会使用或创建自己的IP geolocation API.您可以获得在国家/地区级别上准确率为99.5%的free database.这将非常适合检测没有移动提供商的设备的国家/地区.