我今天就来分享一下用其他的脚本语言的使用实例。想用脚本实现安装卸载手机软件,是不是很高级,但是我不会JavaScript 怎么办?没关系,Total Control 提供的 REST API 支持任意语言,易语言,python,java,都可以的哦!
要实现在多个手机上同时打开、关闭指定应用程序,首先我们得用电脑连接多个手机,然后使用 Total Control 提供的 REST API 控制手机,使用Total Control REST API 的一般步骤:
1. 获取 Total Control 脚本开发所用的开发 token
2. 获取多个设备 ID 值,例如:{\"ids\":[\"device@33254183\",\"device@230441652\"]}

3. 通过第二步的多个设备 ID 值(多设备),对获取的设备进行操作
(一) Total Control 提供的REST API 获取多台设备 ID 集合的方法:
1. 获取所有设备 ID 集合
请求方法:GET
请求 URL:
http://127.0.0.1:8090/TotalControl/v1/devices?q=all&token=270eq7lXQK8bXYsJ
2. 根据给定的组名称获取组内所有设备 ID 集合
请求方法:GET
请求 URL:
http://127.0.0.1:8090/TotalControl/v1/devices?q=group&name=group1&token=270eq7lXQK8bXYsJ
3. 自动连接设备,对当前准备好的设备自动连接
请求方法:POST
请求 URL:
http://127.0.0.1:8090/TotalControl/v1/devices/connections?token=270eq7lXQK8bXYsJ
上面三种获取设备 ID 集合的方法返回值如下:
{
\"ids\":[
\"device@795844152\",
\"device@795812215\"
]
}
(二) 易语言实现在多个手机上同时自动打开软件
函数功能:打开或运行设备上指定的软件
请求方式:POST
http://IP:8090/TotalControl/v1/devices/:device/apps/:packageName?state=active&token=:token
参数说明:
易语言请求实例:同时打开多个手机上的微信,微信的软件名为 \" com.tencent.mm\"
代码如下:
.版本 2
.程序集 窗口程序集_启动窗口
.子程序 __启动窗口_创建完毕
.局部变量 base64, 文本型
.局部变量 token, 文本型
.局部变量 devices, 文本型
.局部变量 j_token, 类_json, , , 用来解析获取 token 的 json
.局部变量 j_dev, 类_json, , , 用来解析获取设备ID 值的 json
.局部变量 j_ret, 类_json, , , 用来解析 REST API 接口的json
.局部变量 bool, 逻辑型
.局部变量 bool_dev, 逻辑型
.局部变量 bool_ret, 逻辑型
.局部变量 AppName, 文本型
.局部变量 status, 文本型
.局部变量 数组成员, 类_json
base64 = 到文本 (编码_BASE64编码 (到字节集 (“sigma:3D391497”)))
输出调试文本 (“将用户名和密码组装成 sigma:3D391497 进行 base64 编码生成的字符串为: ” + base64)
bool = j_token.解析 (到文本 (网页_访问_对象 (“http://localhost:8090/TotalControl/v1/login”, 0, , , , “Authorization:” + base64, , , , , , , , , )))
.如果 (bool)
输出调试文本 (“第一步,获取 token,返回值为:” + j_token.取数据文本 ())
token = j_token.取通用属性 (“['value'].token”)
输出调试文本 (“获取的 token 值为: ” + token)
bool_dev = j_dev.解析 (编码_utf8到gb2312 (到文本 (网页_访问_对象 (“http://localhost:8090/TotalControl/v1/devices?q=all&token=” + token, 0))))
.如果 (bool_dev)
输出调试文本 (“第二步,获取设备 ID 值,返回值为:” + j_dev.取数据文本 ())
devices = j_dev.取属性对象 (“ids”)
输出调试文本 (“获取的设备 ID 值为: ” + devices)
AppName = “com.tencent.mm”
bool_ret = j_ret.解析 (编码_utf8到gb2312 (到文本 (网页_访问_对象 (“http://localhost:8090/TotalControl/v1/devices/ids/apps/” + AppName + “?state=active&token=” + token + “&ids=” + devices, 1))))
.如果 (bool_ret)
输出调试文本 (“第三步,打开手机” + devices + “上指定软件” + AppName)
输出调试文本 (“REST API 打开指定软件的返回值为: ” + j_ret.取数据文本 ())
.否则
输出调试文本 (“该 API 执行失败”)
.如果结束
.否则
输出调试文本 (“获取设备 ID 值失败”)
.如果结束
.否则
输出调试文本 (“获取 token 失败”)
.如果结束
运行结果:
将用户名和密码组装成 sigma:3D391497 进行 base64 编码生成的字符串为: c2lnbWE6M0QzOTE0OTc=
第一步,获取 token,返回值为:{\"status\":true,\"value\":{\"token\":\"ZEGpMU851z2CR45y\"}}
获取的 token 值为: ZEGpMU851z2CR45y
第二步,获取设备 ID 值,返回值为:{\"ids\":[\"device@33254183\",\"device@230441652\"]}
获取的设备 ID 值为: [\"device@33254183\",\"device@230441652\"]
第三步,打开手机[\"device@33254183\",\"device@230441652\"]上指定软件com.tencent.mm
REST API 打开指定软件的返回值为: [{\"id\":\"device@33254183\",\"code\":200,\"retval\":{\"status\":true,\"value\":\"make it active.\"}},{\"id\":\"device@230441652\",\"code\":200,\"retval\":{\"status\":true,\"value\":\"make it active.\"}}]
(三) 易语言实现在多个手机上同时自动关闭软件
函数功能:关闭设备上指定的软件
请求方式:POST
http://IP:8090/TotalControl/v1/devices/:device/apps/:packageName?state=inactive&token=:token
参数说明:
易语言实例:同时关闭多个手机上的抖音小视频软件,抖音小视频的软件名为 \"com.ss.android.ugc.aweme\"
代码如下:
.版本 2
.程序集 窗口程序集_启动窗口
.子程序 __启动窗口_创建完毕
.局部变量 base64, 文本型
.局部变量 token, 文本型
.局部变量 devices, 文本型
.局部变量 j_token, 类_json, , , 用来解析获取 token 的 json
.局部变量 j_dev, 类_json, , , 用来解析获取设备ID 值的 json
.局部变量 j_ret, 类_json, , , 用来解析 REST API 接口的json
.局部变量 bool, 逻辑型
.局部变量 bool_dev, 逻辑型
.局部变量 bool_ret, 逻辑型
.局部变量 AppName, 文本型
.局部变量 status, 文本型
.局部变量 数组成员, 类_json
base64 = 到文本 (编码_BASE64编码 (到字节集 (“sigma:3D391497”)))
输出调试文本 (“将用户名和密码组装成 sigma:3D391497 进行 base64 编码生成的字符串为: ” + base64)
bool = j_token.解析 (到文本 (网页_访问_对象 (“http://localhost:8090/TotalControl/v1/login”, 0, , , , “Authorization:” + base64, , , , , , , , , )))
.如果 (bool)
输出调试文本 (“第一步,获取 token,返回值为:” + j_token.取数据文本 ())
token = j_token.取通用属性 (“['value'].token”)
输出调试文本 (“获取的 token 值为: ” + token)
bool_dev = j_dev.解析 (编码_utf8到gb2312 (到文本 (网页_访问_对象 (“http://localhost:8090/TotalControl/v1/devices?q=all&token=” + token, 0))))
.如果 (bool_dev)
输出调试文本 (“第二步,获取设备 ID 值,返回值为:” + j_dev.取数据文本 ())
devices = j_dev.取属性对象 (“ids”)
输出调试文本 (“获取的设备 ID 值为: ” + devices)
AppName = “com.ss.android.ugc.aweme”
bool_ret = j_ret.解析 (编码_utf8到gb2312 (到文本 (网页_访问_对象 (“http://localhost:8090/TotalControl/v1/devices/ids/apps/” + AppName + “?state=inactive&token=” + token + “&ids=” + devices, 1))))
.如果 (bool_ret)
输出调试文本 (“第三步,关闭手机” + devices + “上指定软件” + AppName)
输出调试文本 (“REST API 关闭指定软件的返回值为: ” + j_ret.取数据文本 ())
.否则
输出调试文本 (“该 API 执行失败”)
.如果结束
.否则
输出调试文本 (“获取设备 ID 值失败”)
.如果结束
.否则
输出调试文本 (“获取 token 失败”)
.如果结束
运行结果:
将用户名和密码组装成 sigma:3D391497 进行 base64 编码生成的字符串为: c2lnbWE6M0QzOTE0OTc=
第一步,获取 token,返回值为:{\"status\":true,\"value\":{\"token\":\"FTGyfvsaOmMP5j3g\"}}
获取的 token 值为: FTGyfvsaOmMP5j3g
第二步,获取设备 ID 值,返回值为:{\"ids\":[\"device@33254183\",\"device@230441652\"]}
获取的设备 ID 值为: [\"device@33254183\",\"device@230441652\"]
第三步,关闭手机[\"device@33254183\",\"device@230441652\"]上指定软件com.ss.android.ugc.aweme
REST API 关闭指定软件的返回值为: [{\"id\":\"device@33254183\",\"code\":200,\"retval\":{\"status\":true,\"value\":\"make it inactive.\"}},{\"id\":\"device@230441652\",\"code\":200,\"retval\":{\"status\":true,\"value\":\"make it inactive.\"}}]
(四) 不知道我要卸载的软件的软件包名怎么办?
为了方便用户,Total Control 提供了一个REST API来帮助用户获取应用程序的包名。
函数功能:获取设备上当前运行的软件包名
请求方式:GET
http://IP:8090/TotalControl/v1/devices/:device/apps?token=:token&q=foreground_app
参数说明:
返回示例:
成功,则返回:
{
\"status\": true,
\"value\":\"com.sigma_rt.totalcontrol\"
}
易语言实例:获取设备上当前运行的软件包名
代码如下:
.版本 2
.程序集 窗口程序集_启动窗口
.子程序 __启动窗口_创建完毕
.局部变量 base64, 文本型
.局部变量 token, 文本型
.局部变量 device, 文本型
.局部变量 j_token, 类_json, , , 用来解析获取 token 的 json
.局部变量 j_dev, 类_json, , , 用来解析获取设备ID 值的 json
.局部变量 j_ret, 类_json, , , 用来解析 REST API 接口的json
.局部变量 bool, 逻辑型
.局部变量 bool_dev, 逻辑型
.局部变量 bool_ret, 逻辑型
.局部变量 status, 文本型
base64 = 到文本 (编码_BASE64编码 (到字节集 (“sigma:3D391497”)))
输出调试文本 (“将用户名和密码组装成 sigma:3D391497 进行 base64 编码生成的字符串为: ” + base64)
bool = j_token.解析 (到文本 (网页_访问_对象 (“http://localhost:8090/TotalControl/v1/login”, 0, , , , “Authorization:” + base64, , , , , , , , , )))
.如果 (bool)
输出调试文本 (“第一步,获取 token,返回值为:” + j_token.取数据文本 ())
token = j_token.取通用属性 (“['value'].token”)
输出调试文本 (“获取的 token 值为: ” + token)
bool_dev = j_dev.解析 (编码_utf8到gb2312 (到文本 (网页_访问_对象 (“http://localhost:8090/TotalControl/v1/devices/main?token=” + token, 0))))
.如果 (bool_dev)
输出调试文本 (“第二步,获取设备 ID 值,返回值为:” + j_dev.取数据文本 ())
device = j_dev.取通用属性 (“['id']”)
bool_ret = j_ret.解析 (编码_utf8到gb2312 (到文本 (网页_访问_对象 (“http://localhost:8090/TotalControl/v1/devices/” + device + “/apps?q=foreground_app&token=” + token, 0))))
.如果 (bool_ret)
输出调试文本 (“第三步,获取当前运行的软件包名,返回值为: ” + j_ret.取数据文本 ())
status = j_ret.取属性对象 (“status”)
.如果 (status = “true”)
输出调试文本 (“恭喜你,成功了!
”)
.否则
输出调试文本 (“不好意思,失败了!
”)
.如果结束
.否则
输出调试文本 (“该 API 执行失败”)
.如果结束
.否则
输出调试文本 (“获取设备 ID 值失败”)
.如果结束
.否则
输出调试文本 (“获取 token 失败”)
.如果结束
易语言代码运行结果:
成功,则返回:
将用户名和密码组装成 sigma:3D391497 进行 base64 编码生成的字符串为: c2lnbWE6M0QzOTE0OTc=
第一步,获取 token,返回值为:{\"status\":true,\"value\":{\"token\":\"U56adwI779838M6F\"}}
获取的 token 值为: U56adwI779838M6F
第二步,获取设备 ID 值,返回值为:{\"id\":\"device@230441652\"}
第三步,获取当前运行的软件包名,返回值为: {\"status\":true,\"value\":\"com.sigma_rt.totalcontrol\"}
恭喜你,成功了!