Как определить, находится ли пользователь (устройство iOS) в Европе? - PullRequest
0 голосов
/ 18 мая 2018

Если, скажем, пользователь не дал мне разрешения на определение местоположения, то как я могу определить, что пользователь находится в Европе?

Ответы [ 2 ]

0 голосов
/ 18 мая 2018

Проверка 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.

0 голосов
/ 18 мая 2018

Может ли это помочь вам:

Используйте текущий TimeZone (или попробуйте Locale).Он выдаст (рядом) часовой пояс, установленный пользователем для даты и времени его устройства.

Цель C:

NSTimeZone *timeZone = [NSTimeZone localTimeZone];
NSString *timeZoneName = [timeZone name];
NSLog(@"timeZoneName - %@",timeZoneName);

NSLocale *locale = [NSLocale currentLocale];
NSString *countryCode = [locale objectForKey: NSLocaleCountryCode];
NSLog(@"countryCode - %@",countryCode);

Swift 4:

let name = TimeZone.current
print("TimeZone name -  \(name)")
// TimeZone name - Asia/Kolkata (current)

let currentlocale = Locale.current
print("currentlocale - \(currentlocale)")
// currentlocale - en_IN (current)

let regioncode = Locale(identifier: currentlocale.regionCode!)    
print("regioncode - \(regioncode)")
// regioncode - in (fixed)
...