一、以前做 iOS 脚本,第一件事是搞签名
写过 iOS 自动化脚本的人,大概都经历过这套流程:
申请证书 → 签名 IPA → 装到手机 → 信任开发者 → 才能开始调试。
而且这套流程不是一次性的。个人签 7 天就过期,过期了 App 打不开,又得重签重装一遍。 改一次代码,就要重新走一遍签名安装,开发节奏被打得很碎。
所以过去很多人的第一感受是:iOS 自动化难的不是写脚本,而是环境。
二、USB HID 换掉了哪一环
USB HID 做的事情,可以概括成一句话:把“控制指令怎么进手机”这一环换掉了。
| 代理模式 | USB HID(免装 App 模式) | |
|---|---|---|
| 指令怎么进手机 | 手机端代理程序执行 | 电脑模拟 HID 外设,经数据线注入 |
| 手机端要装东西吗 | 要装代理 IPA | 不装 |
| 要签名吗 | 要 | 不要 |
| 要越狱吗 | 不要 | 不要 |
| 要额外硬件吗 | 不要 | 不要 |
原理不复杂:电脑模拟成一个 USB 键鼠,把触摸、按键事件通过数据线送给 iPhone。系统分不出信号来自真实外接设备还是电脑程序,在它眼里就是插了个正经的外设。
因为手机端什么都没装,所以没有 IPA 需要签名——签名这一环,不是被优化了,而是被绕过去了。
三、给脚本开发者带来的三个实际变化
3.1 开发循环变短
这是最直接的影响。以前改一次逻辑要重签重装,现在改完直接跑——手机端不用动任何东西。
对长期做脚本的人来说,这个提效比省下的证书钱值钱得多。
3.2 少了“到点失效”的隐患
签名是有有效期的。证书一过期,同一证书下的设备往往一起打不开,属于周期性风险。
免装 App 的模式没有这个问题:放一周、放一个月,功能照常。
3.3 部署门槛大幅降低
以前要入门,得先搞定证书、开发者镜像、信任流程;现在一根数据线就能跑通第一个脚本。
门槛降下来,能动手试的人就多了。
四、usbHidEvent:脚本层怎么调用
顺序是固定的:先开会话 → 再设屏幕尺寸 → 然后操作。
function _usbOk(r) {
return r == null || r === "";
}
function main() {
// 1. 开启会话
let r = usbHidEvent.sessionStart(true);
if (!_usbOk(r)) { logw("开启会话失败: " + r); return; }
// 2. 设置屏幕尺寸(按截图/投屏实际分辨率)
r = usbHidEvent.setScreenSize(1170, 2532);
if (!_usbOk(r)) { logw("设置屏幕尺寸失败: " + r); return; }
// 3. 开始操作
usbHidEvent.clickPoint(200, 400);
usbHidEvent.typeText("hello"); // 英文逐键输入
usbHidEvent.inputText("你好"); // 中文走粘贴
usbHidEvent.systemKey("home"); // 回主屏
usbHidEvent.sessionStop();
}
main();
常用函数一览:
| 类别 | 函数 |
|---|---|
| 触控 | clickPoint / doubleClickPoint / press / swipeToPoint / touchDown·touchMove·touchUp / multiTouch |
| 输入 | typeText / inputText / setClipboard / keyPressChar / keyPress / keyUp |
| 系统 | systemKey(home/recents/lock)/ volumeUp / volumeDown / mute |
| 会话 | sessionStart / sessionRestart / sessionStop |
| 屏幕 | setScreenSize |
坐标规则:先设好屏幕尺寸,之后按截图像素写,所见即所得。
不想用 EC 脚本:中控还开放了 HTTP 接口,POST http://中控IP:8019/openapi/usbhid*,与脚本函数一一对应,Python、Node.js、C# 都能接。
五、能做什么,不能做什么
能做:
- 完整的触控操作(点击、双击、长按、滑动、三段式触控、多点轨迹);
- 文字输入(中英文都支持);
- 系统按键、音量、静音;
- 剪贴板写入(读取有已知限制);
- OCR / YOLO / 图色 / 模板匹配等图像识别(配合独立截图通道)。
不能做:
- 节点抓取(与蓝牙 HID、OTG HID 相同);
- 读取手机屏幕内容需配合截图接口;
- 读取人手复制的剪贴板在部分 iOS 版本上不稳定。
六、什么时候该换回代理模式
USB HID 不是万能的。当业务依赖下面这些能力时,代理模式仍然不可替代:
- 需要节点抓取(按控件而不是按坐标操作);
- 需要批量安装应用;
- 需要向相册插入图片。
实际项目里常见的做法不是二选一,而是共存:代理模式补齐系统级能力,USB HID 承担低风控的批量点击滑动。两套链路功能不冲突,可以在同一套中控里按设备或按任务混用。
说白了:USB HID 降低了入门门槛,但没有取消代理模式的价值。
七、FAQ
- Q:USB HID 改变了哪一环? 改变“控制指令怎么进手机”:从手机端代理程序执行,改为电脑模拟 HID 外设经数据线注入。手机不装程序,签名也就没了。
- Q:对写脚本的人最大的好处? 开发循环变短——改完直接跑,手机端不用重签重装。
- Q:usbHidEvent 复杂吗? 不复杂。顺序固定:开会话 → 设屏幕尺寸 → 操作;返回值 null 或空串为成功。
- Q:坐标怎么定? 先 setScreenSize 设像素宽高,之后按截图像素写,所见即所得。
- Q:能用 Python 调吗? 能,走 HTTP 接口,与脚本函数一一对应。
- Q:做不到什么? 节点抓取、读屏幕内容(需配截图接口);剪贴板读取在部分版本不稳定。
- Q:什么时候换回代理模式? 需要节点抓取、批量安装、相册插入时;实践中两者常共存。
- Q:系统版本要求? 两种 USB_HID 模式要求 iOS 17+。
相关阅读:USB HID 写 iOS 自动化脚本怎么做?完整教程 · iOS 免签名自动化怎么做?配置流程 · 蓝牙 HID、OTG HID、USB HID 怎么选
iEasyClick:安卓 / 苹果 / 鸿蒙全平台手机自动化,支持 EC 脚本开发、AI 智能体对话操控与 USB HID / 蓝牙 HID / OTG HID 多种控制方式 · 官网 ieasyclick.net
想要真实跑起来?
本文介绍的方案均可基于 EasyClick 能力在 iEasyClick 落地。官网提供完整文档、开发工具与自动化产品,免费体验。