IOS. Определение страны пользователя без использования CLLocationManager.

Мне не нужны точные данные о местоположении, и я не хочу, чтобы пользователь видел, как "Это приложение хочет определить ваше местоположение". Мне просто нужно определить страну пользователя, предполагая, что у них есть интернет-соединение через сеть или Wi-Fi.

Каков наилучший способ сделать это? Есть ли способ использовать их IP?

Это будет работать, только если у них есть носитель:

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

И NSLocale не является надежным в том, что пользователь может изменить его в настройках своего устройства. Невозможно использовать настройку языка устройства по той же причине. Мне нужна страна, основанная на том, где они физически расположены.

Ответ 1

Вы можете получить IP-адрес пользователя и использовать базу данных геолокации, чтобы угадать их местоположение на основе описанного здесь: https://en.wikipedia.org/wiki/IP_address_location. Если вас интересует только регион, вы можете найти некоторые данные в региональных интернет-реестрах (https://en.wikipedia.org/wiki/Regional_Internet_registry), чтобы помочь вам, поскольку они контролируют все IP-адреса для определенного региона.