我们知道Total Control可以帮我们实现一台电脑同时控制多达100部手机,但是呢?如果我们几百部手机需要操作,人手不够,精力有限,这时候怎么办呢?脚本就可以展现其强大的力量了。我们可以通过脚本来实现自动化批量操作手机。又有人问了,可是我不会脚本编写啊,Total Control贴心的推出了全新的AAI脚本功能,操作简单,小白也能轻松上手,我们今天就拿自动实现启动或重启指定APP这个例子来看看有多简单!
首先,我们要先下载安装Total Control:
电脑安装软件后,用USB连接手机到电脑,启动软件会推送安装包到手机。
启动或重启指定App
函数功能:
在当前设备下,启动或重启指定包名的APP
对应JS API:
runApp(packageName)
runAppSync(packageName,query)
是否支持多设备:
不支持
请求方式:POST
http://localhost:8090/TotalControl/v2/devices/:device/apps/:packageName?token=:token&state=:state&sync=:sync&query:query
参数说明:
| 参数名 | 类型 | 必选 | 描述 |
| IP | String | Y | 访问 Total Control 服务器的 IP 地址 |
| token | String | Y | Total Control TOKEN |
| device | String | Y | 主控设备对象值 id |
| state | String | Y | app运行标识,active代表启动该APP,restart代表重启该APP,可只要该参数 |
| query | String | N | 寻找启动App后界面中出现的组件,直到query内容代表的组件出现返回结果,超时返回详细信息,可以不添加此参数 |
| sync | String | N | 接口标识,配合query参数使用,固定值:on |
响应参数:
Total Control 提供的 REST API 响应格式都是 JSON ,返回值通常由关键字 ”status” 和 ”value” 组成,
status: 接口执行成功与否
value: 执行接口的返回信息
一、执行接口成功的返回字段说明
| 字段 | 类型 | 描述 |
| status | Boolean | 执行接口成功,则返回:true |
| value | String | 操作信息,成功后返回值为“make it active” |
返回示例:
{
"status": true,
"value": "make it active"
}
二、执行接口返回 HTTP 状态码为 200,但是结果有误的返回字段说明
| 字段 | 类型 | 描述 |
| status | Boolean | 执行接口失败,则返回:false |
| value | String | 返回失败的具体信息 |
返回示例:
{
"status": false,
"value": "
}
请求示例:
http://localhost:8090/TotalControl/v2/devices/device@1116106541/apps/:packageName{
"token":"270eq7lXQK8bXYsJ",
"state":"active",
"sync":"on",
"query":"T:登录"
}
http://localhost:8090/TotalControl/v2/devices/device@1116106541/apps/:packageName{
"token":"270eq7lXQK8bXYsJ",
"state":"restart"
}
示例:启动“Total Control”APP,直到出现“USB 连接”的UI组件
注意:下列示例是通过本机访问 Total Control 服务器,所以 IP 都是用的 ”localhost”。
RingoJS 请求示例:
可以复制下面的代码,在 Total Control 的脚本终端中执行,也可以保存为后缀为 js 的文件, 例如:example.js,在Total Control 执行器中执行。
步骤描述:
- 导入必要的ringoJS 包
- 将用户名密码编码,'sigma:76BF7A2D'是用户名和密码,在Total Control系统设置里面可以看到
- 获取 Total Control 脚本开发所用的开发token和主控设备ID,并将获取的响应内容转换成json对象
- 执行示例
代码如下:
var {request} = require('ringo/httpclient');
var base64 = require('ringo/base64');
var userpass = base64.encode('sigma:76BF7A2D');
var gettoken = request({
method:'GET',
url: 'http://localhost:8090/TotalControl/v2/login',
headers: {'Authorization': userpass}
});
var ret_token = JSON.parse(gettoken.content).value;
var token = ret_token.token;
print("//The value of token is: "+ token);
var getdevice = request({
method: 'GET',
url: 'http://localhost:8090/TotalControl/v2/devices/main?token=' + token
});
var device = JSON.parse(getdevice.content).id;
print("//The value of device ID is:"+ device);
var ret = request({
method: 'POST',
url: 'http://localhost:8090/TotalControl/v2/devices/'+device + '/apps/com.sigma-rt.com?',
data: {
'token':token,
'state':'active',
'query':'T:USB 连接',
'sync':'on'
}
});
print(ret.content);
RingoJS 示例运行结果:
执行成功,则返回:
//The value of token is:m195zZEgY91PMcbo
//The value of device ID is:device@230441652
{
"status":true,
"value":"make it active"
}
易语言请求示例:
.版本 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:76BF7A2D”)))
输出调试文本 (“将用户名和密码组装成 sigma:76BF7A2D 进行 base64 编码生成的字符串为:” + base64)
bool = j_token.解析 (到文本 (网页_访问_对象 (“http://localhost:8090/TotalControl/v2/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/v2/devices/main?token=” + token, 0))))
.如果 (bool_dev)
输出调试文本 (“第二步,获取设备 ID 值,返回值为:” + j_dev.取数据文本 ())
device = j_dev.取通用属性 (“[“id”]”)
输出调试文本 (“获取的设备 ID 值为: ” + device)
bool_ret = j_ret.解析 (编码_utf8到gb2312 (到文本 (网页_访问_对象 (“http://localhost:8090/TotalControl/v2/devices/” + device + “/apps/com.sigma-rt.com?+ “token=&state=active&sync=on&query=T:USB 连接” + token, 1))))
.如果 (bool_ret)
输出调试文本 (“第三步,启动Total Control APP,返回值为: ” + 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}
* 获取的设备 ID 值为: device@230441652
* 第三步,启动Total Control APP,返回值为: {“status”:true,“value”:“make it active”}
* 恭喜你,成功了!



