Определить страну пользователя iPhone
Мне нужно при запуске определить, в какой стране находится пользователь, для приложения для iPhone. Предположительно мне придется включить службы определения местоположения и выполнить какое-то обратное геокодирование. Я действительно не хочу использовать стороннюю веб-службу, если это возможно, есть ли другие предложения для определения страны, из которой предоставляются службы определения местоположения?
Изначально мне нужно только проверить, находится ли пользователь в США или нет, но это может измениться в будущем, чтобы добавить больше стран. Я понимаю, что местоположение не всегда может быть определено или у пользователя могут быть отключены службы определения местоположения. По сути, мне просто нужно знать, определен ли пользователь как находящийся в США, чтобы отключить определенную функцию.
РЕДАКТИРОВАТЬ: При дальнейшем чтении, похоже, что MKReverseGeocoder будет путь, за исключением того, что я не хочу отображать какие-либо карты в моем приложении, что означает, что я не могу использовать это.
5 ответов
Учитывая ограничения MKReverseGeocoder, мне кажется, что единственный реальный способ добиться того, чего я добиваюсь - это использовать сторонний сервис для выполнения обратного геокодирования. Я решил пойти с GeoNames, поскольку они кажутся стандартным выбором.
Другой трюк, который вы можете попробовать, это проверить MCC оператора:
#import <CoreTelephony/CTTelephonyNetworkInfo.h>
#import <CoreTelephony/CTCarrier.h>
CTTelephonyNetworkInfo *netInfo = [[CTTelephonyNetworkInfo alloc] init];
CTCarrier *carrier = [netInfo subscriberCellularProvider];
NSString *mcc = [carrier mobileCountryCode];
NSLocale *locale = [NSLocale currentLocale];
NSString *countryCode = [locale objectForKey: NSLocaleCountryCode];
NSString *countryName = [locale displayNameForKey: NSLocaleCountryCode
value: countryCode];
NSLocale объект, такой как возвращаемый [NSLocale systemLocale], and
[NSLocale autoupdatingCurrentLocale]`) содержит значение NSLocaleCountryCode. Проверьте это в документации Apple.
Если вы не хотите использовать сервисы Google, предоставляемые iPhone SDK, не могли бы вы просто сохранить координаты границ США и проверить, находитесь ли вы в нем?
Здесь уместен вопрос в этом случае. Как я могу определить, находится ли 2D-точка внутри многоугольника?
Если целью ограничения является нечто иное, нежели пользовательский опыт (например, чтобы навязать соучастие с каким-то определенным законодательством США), т.е. когда пользователя нельзя переубедить, я бы сказал, что вам нужна более строгая проверка (в конце концов, в противном случае пользователь просто запретил бы использование служб определения местоположения, не так ли?).
Одним из таких подходов будет поиск IP, например, http://www.maxmind.com/app/geoip_country