Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

Другим трюком, который вы можете попробовать, является проверка несущих MCC:

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

CTTelephonyNetworkInfo *netInfo = [[CTTelephonyNetworkInfo alloc] init];
CTCarrier *carrier = [netInfo subscriberCellularProvider];
NSString *mcc = [carrier mobileCountryCode];

Ответ 3

NSLocale *locale = [NSLocale currentLocale];
NSString *countryCode = [locale objectForKey: NSLocaleCountryCode];

NSString *countryName = [locale displayNameForKey: NSLocaleCountryCode
                         value: countryCode];

Ответ 4

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

Ответ 5

Если вы не хотите использовать сервисы Google, предоставленные iPhone SDK, не могли бы вы просто сохранить координаты US of A и проверить, находитесь ли вы внутри этого?

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

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

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