在iOS上自动获取用户所在国家/地区的最准确方法?

时间:2015-11-18 15:52:05

标签: ios objective-c country country-codes

这个问题可能与编程一样重要。

自动获取用户所在国家/地区的最佳方法是什么(不询问用户

购物应用程序,以便在应用程序中显示正确的店面。想象一下,例如,有三家商店 - 日本,美国和法国。

我可以通过三种方式考虑这样做:

  1. 使用http://ipinfo.io/jsonhttp://freegeoip.net/json/等服务获取国家/地区代码。
  2. 使用设备的运营商代码,我将能够访问他们注册手机的国家/地区。
  3. 使用手机的时区 - 即他们已将时区设为纽约,因此他们的国家/地区是美国。

3 个答案:

答案 0 :(得分:1)

我会使用以下内容:

NSString *locale = [[NSLocale currentLocale] localeIdentifier];

这将适用于在自己国家的绝大多数人,并且没有将他们的地区设置到其他随机国家。

答案 1 :(得分:1)

type==TRUE

会为您提供一个标识符,例如" US" (美国)," ES" (西班牙)等。

答案 2 :(得分:1)

使用<div>获取国家/地区名称

喜欢

NSLocale

来源Link:

否则使用 NSString *CodeofCountry = [[NSLocale currentLocale] objectForKey:NSLocaleCountryCode]; NSString *countryName = [[NSLocale currentLocale] displayNameForKey:NSLocaleCountryCode value:CodeofCountry]; NSLog(@" Code:%@ Name:%@",CodeofCountry, countryName); //Code:IN Name:India 获取当前位置&amp; CLLocationManager执行反向地理编码。您可以获得国家/地区名称

CLGeocoder

否则使用 - (void)locationManager:(CLLocationManager *)manager didUpdateLocations:(NSArray *)locations { if (locations == nil) return; self.currentLocation = [locations objectAtIndex:0]; [self.geocoder reverseGeocodeLocation:self.currentLocation completionHandler:^(NSArray *placemarks, NSError *error) { if (placemarks == nil) return; self.currentLocPlacemark = [placemarks objectAtIndex:0]; NSLog(@"Current country: %@", [self.currentLocPlacemark country]); NSLog(@"Current country code: %@", [self.currentLocPlacemark ISOcountryCode]); }]; }

NSTimeZone