我正在使用NSLocale
来检测我的用户现在所在的国家/地区。
当我想检查用户是否在美国境内时
NSLocale *locale = [NSLocale currentLocale];
NSString *countryCode = [locale objectForKey: NSLocaleCountryCode];
if ([countryCode isEqualToString:@"US"]) {
///////
}
这是检查的正确方法吗?
答案 0 :(得分:5)
NSLocale
仅表示用户的语言和文化偏好,而不是其位置。如果您想知道用户的物理位置,则应使用Core Location API。
答案 1 :(得分:2)
这是一个“是”和“否”的答案。
是的,这会为您提供用户当前的首选区域设置。 And judging from other questions like yours,其他人已经认定这个答案“足够好”。
但是,我可以使用我的iPhone在中国,如果我还在使用英语,我相信countryCode仍会返回“US”。
如果您真的想知道用户当前的国家/地区,可以使用CoreLocation并执行一些反向地理编码。使用CoreLocation坐标,您可以查找http://ws.geonames.org/findNearby?lat=47.3&lng=9之类的内容。还有MKReverseGeocoder(从iOS 5.0开始不推荐使用)和GLGeocoder,调用– reverseGeocodeLocation:completionHandler:
(为您链接的文档)。