Определить страну пользователя iPhone
Мне нужно определить при запуске, в какой стране находится пользователь, для приложения iPhone. Предположительно, мне придется включить службы определения местоположения и сделать какое-то обратное геокодирование. Я действительно не хочу использовать сторонний веб-сервис, если это возможно, есть ли какие-либо другие предложения по определению страны из того, какие службы предоставления услуг предоставляют?
Сначала мне нужно только проверить, находится ли пользователь внутри США или нет, но это может измениться в будущем, чтобы добавить больше стран. Я понимаю, что местоположение не всегда может быть определено или у пользователя могут быть отключены службы определения местоположения. В принципе, мне просто нужно знать, обнаружен ли пользователь как находящийся внутри США, чтобы отключить определенную функцию.
EDIT: при дальнейшем чтении, похоже, что MKReverseGeocoder - это путь, за исключением того, что я не хочу отображать какие-либо карты в своем приложении, а это значит, что мне не разрешено использовать это.
Ответы
Ответ 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