gpt4 book ai didi

ios - 通过 iPhone 的 IP 地址进行地理定位

转载 作者:搜寻专家 更新时间:2023-10-30 23:04:29 25 4
gpt4 key购买 nike

我喜欢使用设备的 IP 地址来跟踪用户的“位置”。

我已经在寻找一些 API 服务,例如:

  • freegeoip.net
  • api.petabyet.com
  • ip-api.com

但我不知道如何使用此服务来获取用户设备的位置。

实际上,我已经在寻找一些 Swift 代码片段来获得想要的结果(获取位置),但我找不到任何与当前版本的 Swift 匹配的代码。

let url = NSURL(string: "http://freegeoip.net")
let task = URLSession.shared.dataTask(with: url! as URL) {(data, response, error) in
let httpResponse = response as? HTTPURLResponse
if (httpResponse != nil) {

} else { }
}; task.resume()

以上几行是我到目前为止所得到的。但我真的希望有人能帮我解决这个问题。

最佳答案

您可以从尝试 http://ip-api.com/json 开始,它会返回一个 JSON,如 on their API page 所述。 .

然后您可以将此 JSON 字符串转换为字典并访问数据。

func getIpLocation(completion: @escaping(NSDictionary?, Error?) -> Void)
{
let url = URL(string: "http://ip-api.com/json")!
var request = URLRequest(url: url)
request.httpMethod = "GET"

URLSession.shared.dataTask(with: request as URLRequest, completionHandler:
{ (data, response, error) in
DispatchQueue.main.async
{
if let content = data
{
do
{
if let object = try JSONSerialization.jsonObject(with: content, options: .allowFragments) as? NSDictionary
{
completion(object, error)
}
else
{
// TODO: Create custom error.
completion(nil, nil)
}
}
catch
{
// TODO: Create custom error.
completion(nil, nil)
}
}
else
{
completion(nil, error)
}
}
}).resume()
}

此函数返回字典或错误(在您解决 TODO 之后)。 completion 在主线程上调用,假设您将使用结果来更新 UI。如果没有,您可以删除 DispatchQueue.main.async { }

关于ios - 通过 iPhone 的 IP 地址进行地理定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48530829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com