如何检测用户(iOS设备)是否在欧洲?



如果说用户没有给我位置权限,那么我如何检测用户在欧洲?

愿这对您有所帮助:

使用当前TimeZone(或尝试区域设置(。它将提供(附近(时区,由用户为其设备日期时间设置。

目标C:

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

斯威夫特 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)

检查Locale对您没有多大好处,因为它仅反映设备的设置,而不是物理位置。

如果您被拒绝了位置服务,我认为最好的解决方法是使用免费的基于 IP 的地理定位服务,例如此服务。

您需要做的就是执行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": ""
}

如您所见,它会返回一堆有用的信息,例如国家/地区名称或国家/地区代码。

您可以轻松找到如何在Objective-c中获取设备的IP地址,例如在这里

缺点是,如果用户通过VPN连接到互联网,您将无法获得准确的结果。

相关内容

最新更新