【问题标题】:How to detect is user's (iOS device) is in Europe?如何检测用户(iOS 设备)是否在欧洲?
【发布时间】:2018-10-28 15:45:51
【问题描述】:

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

【问题讨论】:

  • 使用语言环境......
  • 这不是那个帖子的骗子。这里的海报特别说他们没有位置许可,其他帖子有。我有同样的问题,这可能与 GDPR 有关。
  • 是的,它与 GDPR 相关

标签: ios objective-c location


【解决方案1】:

希望对您有所帮助:

使用当前的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)

【讨论】:

  • 时区或区域设置仅取决于设备的设置,而不是物理位置。由于 OP 提到尝试使用位置,我猜他想要后者。
  • @mag_zbc - 我知道。但据我所知,这是可能的(附近)答案。由于位置许可(或者我可能错了),这个问题可能没有确切的解决方案。但是为了帮助 OP,我刚刚在附近发布了答案。希望找到解决方案会很有用。
【解决方案2】:

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

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

您需要做的就是向http://ip-api.com/json/{ipAddress} 执行GET 请求

例子:

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 地址,例如here

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

【讨论】:

  • GDPR - 未经用户同意,我无法获得用户的 IP。为了显示同意对话框,我需要检测他是否在欧洲。 :)
  • 根据文档,您无需指定 IP - 您可以提供 IP 地址或域进行查找,或者不提供以使用您当前的 IP 地址。跨度>
猜你喜欢
  • 2022-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-08
  • 2011-09-12
  • 1970-01-01
相关资源
最近更新 更多