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

2023-12-25

我喜欢追踪用户”location" 通过使用设备的 IP 地址。

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

  • 自由地理网
  • 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,如所解释的在他们的 API 页面上 http://ip-api.com/docs/api:json.

然后,您可以将此 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 { }.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 iPhone 的 IP 地址进行地理定位 的相关文章

  • iOS 电池监控 Swift

    我已将监控设置为启用 但模拟器和设备中的电池电量仍然为 1 UIDevice currentDevice batteryMonitoringEnabled true var level UIDevice currentDevice batt
  • iOS 上的 UIBezierPath 操作

    我从一条直线开始 我希望用户能够触摸并拖动该线 使其弯曲 实际上 他们有能力将线条操纵成波浪形状 我不确定从技术上实现这一目标的最简单方法 我首先创建了三次曲线的 UIBezierPaths 数组 目的是操纵控制点 但似乎一旦绘制了 UIB
  • Swift:如何减少 didupdatelocations 调用

    我想出了一些代码来打印我所在位置的地址和邮政编码 这是在 didupdatelocation 函数中完成的 我遇到的唯一问题是 didupdatelocation 函数每秒都会更新该地址 因为这电池效率非常低 所以我一直在寻找使用间隔的方法
  • 为什么在授予用户权限时,UIUserNotificationType.None 在当前设置中返回 true?

    我正在编写一种方法来检查当前用户设置是否包含某些通知类型 当检查当前设置是否包含 UIUserNotificationsType None 时 无论授予权限还是拒绝权限 它都会返回 true 有谁知道这是为什么吗 func register
  • 从 iOS 应用程序内的 Junos Pulse 获取用户凭据

    我正在通过 Junos Pulse 在 iPad 中建立 VPN 连接 以进入我组织的 Intranet 谁能告诉我是否有任何 iOS api 或 SDK 可用于获取在 iOS 应用程序内的 Junos pulse 中输入的用户凭据 Jun
  • 检测 AVAudioPlayer 中的播放结束

    我有几个短的 mp3 声音 我将它们存储在数组中 并希望连续播放它们 有什么方法可以检测 AVAudioPlayer 何时停止播放 以便我可以调用完成处理程序并播放下一个声音 我知道有一个委托 但我正在使用 Playground 和 SKS
  • 当 UITextField 已满或空时显示警报 Swift

    下面的代码中 如果 userNameTF 或 passwordTF 已满或为空 则会显示警报 IBAction func LoginBtn sender AnyObject let userName userNameTF text let
  • 在iOS上,“添加到主页”缓存保存在哪里,如何清除它?

    我正在 iPad iOS v7 上制作一个 html5 游戏 当我将其添加到主页时 它非常顽固地释放缓存 如果我在 Safari 中查看它 这会按照您所期望的方式工作 如果我刷新一次或两次 页面就会以最新状态缓存 但在主页上却是另一回事 它
  • 如何在 iOS 中更改部分透明图像的颜色?

    我有一个具有部分透明度的单色图像 我有正常版本和 2X 版本的图像 我希望能够用代码将图像着色为不同的颜色 下面的代码适用于普通图像 但 2X 最终会出现伪影 正常图像可能有类似的问题如果是这样 由于分辨率的原因我无法检测到它 UIImag
  • 进入前台后刷新数据

    更改默认设置后 我想在AppDelegate中进入前台时刷新myViewController的数据 我所做的是 AppDelegate m void applicationDidFinishLaunching UIApplication a
  • 关于窗口层次结构的警告

    我的调试器中出现这样的警告 这是什么意思 Warning Attempt to present
  • iphone NSDate 转换问题

    在我的 facebook 图表 Api 中 我正在获取这些数据 来自杰森 updated time 2011 05 17T14 52 16 0000 我正在使用此代码将其转换为有效的日期格式 NSDateFormatter df NSDat
  • 个人帐户开发者之间的 Apple 开发/分发证书

    我一直在到处寻找有关处理证书的正确答案 想象一下以下帐户 Joe拥有个人 Apple 帐户 但他根本不会编码 他只是发布了该应用程序并将其称为自己的 Bob还有一个个人 Apple 帐户 Bob 是一位编码专家 Joe 付费让他开发他的第一
  • iOS 循环对象的属性并添加操作

    我有一个具有几个类似属性的类 UISliders 我想添加用户开始和结束使用每个滑块时的操作 每个滑块都将链接到同一个选择器 因此我考虑只是迭代它们 而不是编写 10 个几乎相同的代码块 问题是 最有效的方法是什么 我尝试过这样的事情 在运
  • 避免 UIImage 的 imageNamed - 内存管理

    我正在经历这个链接 http akosma com 2009 01 28 10 iphone memory management tips 我遇到了一个点避免 UIImage 的 imageNamed 出于什么原因我们应该避免这种情况 它会
  • Swift C 回调 - Swift 类指针的 takeUnretainedValue 或 takeRetainedValue

    我有一些UIView or UITableViewCell 里面我有 C 回调 例如 CCallback bridge self observer data gt Void in let mySelf Unmanaged
  • Swift 中的 UIAlert 自动消失?

    我有以下代码 Creates Alerts on screen for user func notifyUser title String message String gt Void let alert UIAlertController
  • RemoteIO 音频单元播放回调中的 AudioBufferList 内容

    我想 拦截 音频数据传送到 iOS 设备扬声器的过程 我相信这可以使用 RemoteIO 音频单元和回调来完成 在下面的playbackCallback中 ioData实际上包含任何音频数据吗 static OSStatus playbac
  • 苹果推送通知在生产中不起作用

    我们完全陷入困境 请帮忙 我和我的团队制作了一个 iPhone 应用程序 这是我们第一次在 iOS 上尝试 一切都很好 直到我们提交应用程序并在应用程序商店上可用为止 推送通知服务无法正常工作 我在网上搜索并尝试根据人们的建议仔细检查我们的
  • 为什么使用 iPhone 或 iOS 设备在“iframe”中查看“position:fixed”时不起作用?

    我研究过 stackoverflow 似乎position fixed在 iOS 移动设备的 iframe 中 https stackoverflow com questions 15874910 position fixed and if

随机推荐

  • 在带参数的 HTML5 广告横幅中使用 ExitAPI

    我使用 HTML5 和表单元素为 Adwords 创建了一个横幅 它接受很少的输入 例如您喜欢的颜色 类型等 整个横幅不可点击 只有提交按钮是不可点击的 这是我通过在按钮上添加 onclick ExitApi exit 来实现的 所有这些都
  • 测试鼠标滚轮事件

    我已经设置了一个简单的函数来处理我构建的菜单组件上的鼠标滚轮事件 该组件工作正常 我正在尝试围绕它编写一个单元测试 这给我带来了一个问题 组件处理程序 handleWheel function event event deltaY lt 0
  • 多重纹理 OpenGL GLUT C++

    好吧 仍然有一些问题 这就是我到目前为止所遇到的问题 Bitmap Display m HeightMap unsigned int Display textures 我的初始化方法 glEnable GL TEXTURE 2D Bitma
  • 使用法国模型运行斯坦福 corenlp 服务器

    我正在尝试使用斯坦福 CoreNLP 工具分析一些法语文本 这是我第一次尝试使用斯坦福 NLP 软件 为此 我下载了 v3 6 0 jar 和相应的法国模特 http nlp stanford edu software stanford f
  • 如何在 Angular 6 中的 mat-list-item 上使用禁用属性?

    我有 mat list 其中有 mat list items 我使用 disabled 将禁用状态命名为 mat list item 但它不起作用并给出类似错误 无法绑定到 禁用 因为它不是 mat list item 的已知属性 如何在
  • 当循环引用的访问路径被破坏时,Java 垃圾收集器如何处理循环引用?

    Can someone please explain to me how does Java garbage collector realize those memory blocks pictured in red area are ga
  • woocommerce 预订和 Woocommerce get_customer_note();

    我试图显示 get customer note 在 woocommerce 预订插件中 一切正常 但没有从订单中获取客户备注 我的编码器 p class form field form field wide p
  • 搜索空字符串时 find 与 find_first_of

    在STL中 当我这样做时s find 它返回 0 同时s find first of 返回 1 npos 造成这种差异的原因是什么 s find t 查找子字符串第一次出现的位置t in s If t为空 则该事件发生在s and s fi
  • 更改文本视图时的动画

    我目前使用一个主要的解决方法 每次更改 TextView 上的文本时都会切换两个活动 我正在使用这段代码 Weeklytext this overridePendingTransition R anim slide in left R an
  • 为什么 array_unique 对值进行排序?

    这指的是我之前的问题之一 array unique 与 array flip https stackoverflow com questions 8321620 array unique vs array flip 这表明array fli
  • 如何在 ASP.NET MVC 页面上显示波斯数字?

    我正在建立一个需要支持英语和波斯语的网站 该网站是使用 ASP NET MVC 3 和 NET 4 C 构建的 我的所有控制器都继承自 BaseController 它将文化设置为 fa IR 在测试期间 Thread CurrentThr
  • 如何根据功能标志有条件地执行模块级文档测试?

    我正在为一个模块编写文档 该模块具有由 Cargo 功能标志控制的一些选项 我希望始终显示此文档 以便板条箱的使用者知道它是可用的 但我只需要在启用该功能时运行该示例 lib rs This crate has common utility
  • 当我点击软键盘上的“完成”按钮时如何进行下一个活动 android

    当我点击软键盘时 我的键盘被按下或隐藏 但当我点击 Android 键盘上的 完成 按钮时 我想进入下一个活动 那么该怎么做呢 我的下一个问题是 如果我的布局中有 2 个编辑框 当我单击第一个编辑框时 然后在我的软键盘中 将出现 下一个 以
  • 关于大型稀疏矩阵求逆的建议

    刚刚安装了一台 Windows 机器 配备两个 64 位 Intel Xeon X5680 3 33 GHz 处理器 每个 6 核 和 12 GB RAM 我一直在一些大型数据集上使用SAS 但它太慢了 所以我想设置R来进行并行处理 我希望
  • google.visualization.ChartWrapper 组列视图

    我是 Google 可视化 API 的新手 而且我对 JavaScript 不太熟悉 我希望输出按第 2 列中的标签进行分组 请注意 纽约在图表上重复出现 我只想让图表按标签对第 2 列进行分组 并对第 3 列中的数值进行求和 有人知道怎么
  • Haskell 中的实例是什么意思?

    在面向对象的语言 例如 Java 和 Python 中 我们可以从类创建对象 实例 在 Haskell 中 我们可以从类型类创建实例 例如 data ShirtSize S M L Here ShirtSize is a enum data
  • 如何在 Inno Setup 安装程序中捆绑来自 NuGet 包的仅运行时依赖项?

    我正在为一个具有几个运行时 dll 依赖项的程序创建一个安装程序 这些依赖项以 NuGet 包的形式提供 我想知道是否可以以某种方式向 Inno Setup 指定 NuGet 包列表 以便它下载这些包并将相应的 dll 捆绑到我的安装程序中
  • ActiveRecord::HasManyThroughOrderError:不能有 has_many :through 关联

    在我的 Rails 应用程序中 我试图创建一个系统 为用户提供各种成就的徽章奖励 创建了一个表 user badges 移民 class CreateUserBadges lt ActiveRecord Migration 5 1 def
  • 线程安全是原子的还是非原子的?

    我搜索并发现不可变是线程安全的 而可变则不是 这可以 但我得到了误导性的笔记 博客 有关线程安全的原子与非原子的答案 请对答案进行解释 假设有一个名为 name 的原子字符串属性 如果您调用 self setName A 从线程 A 调用
  • 通过 iPhone 的 IP 地址进行地理定位

    我喜欢追踪用户 location 通过使用设备的 IP 地址 我已经寻找过一些 API 服务 例如 自由地理网 api petabyet com ip api com 但我不知道如何使用此服务来获取用户设备的位置 实际上我已经寻找了一些 S