给人用
远程控制:用另一台 iPhone 或浏览器操作手机
同一套守护进程既给 agent 用,也给人用:在浏览器或 iOS App 里看实时画面,点、滑、输入。 付费开发者账号签的 App 还能让手机自己跑控制服务,不需要电脑; 配一个云中继,就能从任何网络连回来。
三种用法
手机插在 Mac 上(或和 Mac 在同一 Wi‑Fi),在 Mac 的控制页或 iOS App 里操作。画面是手机上编码的 H.264。
被控手机上的 Phone Use 自己跑控制服务,运行时不需要 Mac。另一台手机在同一局域网里直接连它。
被控手机主动连到你部署的中继,控制方从任何网络经中继连过来。被控手机不用开端口,也不用 VPN。
装 App
App 不在 App Store 上,用你自己的开发者账号构建安装:
$ iphone-use setup-app # 默认实例的手机
$ iphone-use setup-app --instance i13 # 另一台手机
- 付费团队得到完整版,带「本机控制」;免费 Apple ID 只能签远程版,用来连 Mac 托管的手机。
- 第一次打开前,在手机的 设置 › 通用 › VPN 与设备管理 里信任你的开发者证书。
- App 第一次连局域网时,iOS 会要本地网络权限,要允许。
手机自托管:不需要电脑
- 首次配对:
setup-app装完会用 USB 做一次配对,把配对记录交给 App。之后运行时不再需要 Mac。 - 启用:在被控手机上打开 Phone Use › 设置 › 本机控制 › 启用本机控制,允许添加 VPN 配置。本机控制占用的是 iOS 唯一的 VPN 位置,所以和 Tailscale 等 VPN 不能同时开。
- 连接:点「让其他设备连接」出二维码,用另一台手机的 Phone Use 扫码。
本机控制和 Mac 上的 runner 会抢同一个自动化会话。要用本机控制,先在 Mac 上 iphone-use setup pause --instance <名字>;要改回 Mac 托管,先在 App 里停掉本机控制,再 iphone-use setup resume。
不碰被控手机就连上
两台手机都连着 Mac 时,一条命令就能把控制方连上被控手机,不用扫码:
$ iphone-use setup-app --instance i13 --connect-to default --connect-only
Mac 通过 USB 往被控手机的 App 里放一个只能用一次、5 分钟内有效的连接码,再在控制方手机上打开连接链接。控制方手机会弹一次确认,点「连接」即可。
跨网络:云中继
被控手机在家、控制方在外面(比如走蜂窝网络)时,用云中继。中继只转发;登录、配对码、设备令牌这些鉴权,仍由被控手机上的守护进程自己做。
控制方 ──https──▶ 中继 /p/<id>/… ──WebSocket──▶ 被控手机上的守护进程
部署你自己的中继
中继是一个 Cloudflare Worker(每台手机一个 Durable Object),在仓库的 relay/ 目录里。用你自己的 Cloudflare 账号:
$ cd relay && npm install
$ npx wrangler login
$ $EDITOR wrangler.toml # 换成你的域名,或删掉 routes 用 workers.dev
$ npx wrangler deploy
$ curl https://<你的中继>/ # → iphone-use relay
让手机经中继连接
$ iphone-use setup-app --instance <被控手机> --connect-to <控制方手机> \
--connect-only --relay https://<你的中继>
被控手机拿到中继地址后会一直保持一条出站连接。控制方和它在同一 Wi‑Fi 时,App 会自动改走局域网直连(状态栏显示「局域网」),离开后回到中继(显示「外网」)。Mac 上的守护进程设置 IPHONE_USE_RELAY_URL=https://<你的中继> 也会连到中继。
费用与限制
- Worker 出站流量不收费。中继用 WebSocket 休眠,手机连着但没人看时不计运行时长。
- 按每秒约 10 帧看一小时,大约是 1,800 个计费请求加 450 GB·s;付费套餐每月的含量够看约 890 小时。以 Cloudflare 官方价格为准。
- 中继有流量控制:网速跟不上时少传帧,而不是越积越卡。画面清晰度取决于控制方的下行网速。
- TLS 在 Cloudflare 终止,中继看得到经过它的流量。介意的话请自己部署。
- 经中继请用 iOS App;守护进程的网页默认部署在根路径,暂不支持经中继打开。
常见问题
为什么不用 Tailscale?
iOS 同一时间只允许一个 VPN 生效,而本机控制本身就占用了这个位置。被控手机由 Mac 托管时,Tailscale 这类 VPN 仍然可以用来访问 Mac。
画面黑着,但能操作?
先看状态栏的延迟和帧率。外网下帧率很低,通常是控制方网速不够;回到局域网会自动变快。还是没有画面,点「重新加载画面」。
谁能连我的手机?
只有拿到一次性配对码(二维码或 --connect-to)、或者已经配对过的设备。中继地址里的 id 是随机的,中继还会锁定手机第一次出示的密钥,别人冒充不了这台手机。