Определите страну пользователя iPhone

Я должен определить при запуске, какая страна пользователь находится в для приложения для iPhone. По-видимому, я должен буду включить службы определения местоположения и сделать своего рода обратное геокодирование. Я действительно не хочу использовать сторонний веб-сервис, если это возможно, есть ли какие-либо другие предложения для определения страны от того, какие службы определения местоположения обеспечивает?

Первоначально, я только должен проверить, является ли пользователь в США или нет, но это может измениться в будущем для добавления большего количества стран. Я понимаю, что местоположение не может всегда определяться, или пользователю можно было выключить службы определения местоположения. В основном я просто должен знать, обнаруживается ли пользователь как являющийся в США для выключения определенной функции.

Править: На дополнительных материалах для чтения похоже, что MKReverseGeocoder был бы способом пойти, кроме я не хочу отображать любые карты в своем приложении, что означает, что мне не разрешают использовать это.

26
задан Ben Williams 15 June 2010 в 11:20
поделиться

5 ответов

Учитывая ограничения MKReverseGeocoder, кажется, что единственный возможный способ достичь того, что я хочу, это использовать сторонний сервис для выполнения обратного геокода. Я выбрал GeoNames, поскольку они кажутся стандартным выбором.

4
ответ дан 28 November 2019 в 06:35
поделиться

Еще один трюк, который вы можете попробовать, это проверка носителя MCC:

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

CTTelephonyNetworkInfo *netInfo = [[CTTelephonyNetworkInfo alloc] init];
CTCarrier *carrier = [netInfo subscriberCellularProvider];
NSString *mcc = [carrier mobileCountryCode];
35
ответ дан 28 November 2019 в 06:35
поделиться

Объект NSLocale, например, возвращенный [NSLocale systemLocale] и [NSLocale autoupdatingCurrentLocale] `), содержит значение NSLocaleCountryCode. Проверьте это в документации Apple.

2
ответ дан 28 November 2019 в 06:35
поделиться

Если вы не хотите использовать сервисы Google, предоставляемые iPhone SDK, не могли бы вы просто хранить координаты границ США и проверять, находитесь ли вы внутри этих границ?

Вот соответствующий вопрос в этом случае Как определить, находится ли двумерная точка внутри многоугольника?

Если целью ограничения является нечто иное, чем удобство пользователя (например, обеспечение соблюдения определенного закона США), т.е. когда пользователя невозможно поймать, я бы сказал, что вам нужна более строгая проверка (в конце концов, в противном случае пользователь просто запретит использование служб определения местоположения, не так ли?).

Одним из таких подходов может быть поиск по IP, например, http://www.maxmind.com/app/geoip_country

1
ответ дан 28 November 2019 в 06:35
поделиться
NSLocale *locale = [NSLocale currentLocale];
NSString *countryCode = [locale objectForKey: NSLocaleCountryCode];

NSString *countryName = [locale displayNameForKey: NSLocaleCountryCode
                         value: countryCode];
23
ответ дан 28 November 2019 в 06:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: