Проверка Locale
не принесет вам большой пользы, поскольку отражает только настройки вашего устройства, а не физическое местоположение.
Если вам было отказано в услуге определения местоположения, я думаю, что лучшим обходным решением будет использованиебесплатный сервис геолокации на основе IP, такой как this .
Все, что вам нужно сделать, это выполнить GET
запрос к http://ip-api.com/json/{ipAddress}
Пример:
GET http://ip-api.com/json/8.8.8.8
(google-public-dns-a.google.com) возвращает json
{
"as": "AS15169 Google LLC",
"city": "Mountain View",
"country": "United States",
"countryCode": "US",
"isp": "Google",
"lat": 37.4229,
"lon": -122.085,
"org": "Google",
"query": "8.8.8.8",
"region": "CA",
"regionName": "California",
"status": "success",
"timezone": "America/Los_Angeles",
"zip": ""
}
Как видите, он возвращает вам кучу полезной информации, например, название страныили код страны.
Вы можете легко найти, как получить IP-адрес устройства в Objective-C, например, здесь
Недостатком является то, что вы не получите точный результатесли пользователь подключен к интернету через VPN.