iPhone 模拟定位操作指南
概述
苹果为开发者调试 App 提供了官方的模拟定位能力。借助 Xcode 自带的 devicectl 命令行工具,可以在不越狱、不安装第三方证书、不使用 VPN、也不侧载 App 的情况下,为已连接的 iPhone 设置测试位置。
文中示例环境为 M 芯片 Mac、macOS 27 和 Xcode 27。不同系统或 Xcode 版本的命令行为可能存在差异,请以本机实际输出为准。
准备条件
- 一台安装了 Xcode 的 Mac
- 一部 iPhone
- 一根可传输数据的数据线
- iPhone 与 Mac 建立信任关系
- iPhone 已开启“开发者模式”
操作步骤
1. 连接并信任设备
用数据线连接 iPhone 和 Mac,在 iPhone 上选择“信任此电脑”,并按提示完成验证。
2. 开启开发者模式
在 iPhone 上依次打开:
设置 → 隐私与安全性 → 开发者模式
打开开关后按照提示重启设备。重启完成后,再确认一次“打开”。
3. 获取设备 ID
在 Mac 的“终端”中执行:
xcrun devicectl list devices
在输出列表中找到自己的 iPhone。该行 Identifier 一栏显示的值就是设备 ID(UDID),后续命令需要使用它。
4. 设置模拟位置
将下面命令中的 你的设备ID 替换为实际 UDID,并填写目标地点的纬度和经度:
xcrun devicectl device simulate location coordinate \
--device 你的设备ID \
--latitude=40.7580 \
--longitude=-73.9855
上面的坐标是纽约时代广场示例。设置其他地点时,替换经纬度即可。
参数注意事项
- 纬度范围为南北方向,南纬使用负数。
- 经度范围为东西方向,西经使用负数。
- 参数必须使用等号形式,例如
--longitude=-73.9855。 - 不要写成
--longitude -73.9855,否则负号可能被命令行解析为新的参数,从而出现Missing value for '--longitude'错误。
如果命令执行成功,终端会显示类似以下提示:
Set location to: 40.7580, -73.9855
验证位置是否生效
在 iPhone 上:
- 确认“定位服务”已开启。
- 打开苹果自带的“地图”,检查当前位置是否已变为目标地点。
- 打开“天气”App,确认显示的地区天气是否对应目标地点。
拔掉数据线后的效果
按照原文实测,位置设置完成后可以拔掉数据线,模拟位置仍会保持,不需要持续连接 Mac。设备重启后模拟位置会失效;再次使用时,需要重新连接 Mac 并执行设置命令。
恢复真实定位
在终端执行以下命令即可清除模拟位置:
xcrun devicectl device simulate location clear --device 你的设备ID
清除后,设备将恢复使用真实定位。
快速流程
连接并信任 iPhone
↓
开启开发者模式并重启
↓
使用 devicectl 查询设备 ID
↓
执行 simulate location coordinate 设置坐标
↓
用“地图”和“天气”验证
↓
需要恢复时执行 simulate location clear
该方法出处https://x.com/jamesmv49/status/2106649446398505446?s=46
实际效果展示




mac上原生有模拟的方法吗