设备控制
若要启用设备控制,你需要打开 X.X.T. 应用程序 -> 更多 -> 远程访问。
批量控制你的 iPhone 设备集群是 XXTouchNG 一个很重要的功能。你可以通过 XXTouchNG 的 OpenAPI 协议,对你的设备集群进行批量操作,比如:
- 初始化设备
- 批量上传、运行或停止脚本
- 安装或卸载应用
- 注销或重启设备
- 收集日志
- ……
OpenAPI
OpenAPI 是 XXTouchNG 提供的一套基于 HTTP 的控制协议,你可以通过 HTTP 请求来控制你的设备集群。
最新的 OpenAPI 版本为 v3。我们推荐你使用 Postman 来测试 OpenAPI。
XXTouchNG 也同时支持 XXTouch、触摸精灵 和 触动精灵 的 OpenAPI 协议:
如果你希望 XXTouchNG 支持更多的 OpenAPI 协议,或者支持你已有的群控系统,请联系你的销售代表获取报价。
编写控制软件
正如你所看到的,XXTouchNG VSCode 插件提供了一个简易的界面,让你可以在 VSCode 中对选定的单台设备进行控制。
XXTouch 云控 基于 触摸精灵开源版云控 进行修改,提供了一个更加强大的跨平台 Electron 界面,让你可以对局域网内的多台设备进行扫描和批量控制。同时也支持客户端/服务器反转,让你可以在广域网对设备集群进行远程控制。
XXT 局域网控制器(aardio 版)是一个基于 aardio 开发的、简易的 Windows 局域网控制器示例,你可以通过它来学习如何编写控制软件。
试一试!局域网扫描
在 VSCode 工作区新建 broadcast-scan.py Python 脚本,输入以下内容:
# -*- coding: utf-8 -*-
import socket, json
local_ip = '192.168.2.174' # 电脑端地址
local_port = 31500
local = (local_ip, local_port)
remote = ("255.255.255.255", 46953)
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(local)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
s.sendto(json.dumps({"ip":local_ip, "port": local_port}).encode(), remote)
# 接收广播, 接收到的数据是 json 格式的
# ipv4 + ipv6, 过滤掉不需要的数据
while True:
data, addr = s.recvfrom(2048)
if not data:
nLog("client has exist")
break
nLog("received", data, "from", addr)
s.close()
运行脚本,你的 Mac 电脑会向局域网内的所有设备的 46953 端口发送一个 UDP 广播,告诉他们你的 IP 地址和端口号。装有 XXTouchNG 的 iPhone 设备会回复一个 JSON 格式的数据,包含了设备的信息,比如:
{
"devmac": "90:8c:43:79:0a:55",
"devtype": "iPhone12,8",
"deviceid": "00008030-000531841483802E",
"ip": "192.168.2.33",
"hwmodel": "D79AP",
"port": 46952,
"devname": "RachelSE143",
"sysversion": "14.3",
"zeversion": "3.0.1",
"devsn": "FFWCK2F3PLK7"
}
你将在终端看到这些响应数据,使用这些数据来过滤出目标设备,随后通过 OpenAPI 的其他接口控制你的设备集群。
使用 Ctrl + C 组合键终止上述 Python 脚本。