361一键新机 除了简洁人性化的UI体验之外,也提供脚本调用的使用方式。开发者可以使用Lua语言,在触动精灵的平台上,通过http方式调用本设备上的361一键新机的核心功能。本文列出了基本的调用接口和示例。
我们推荐使用Lua语言的方式来调用。但我们同时也支持OpenUrl的调用方式,使用非常简单,将以下指令中的"http://127.0.0.1:361/"替换成"361://"即可。同时,其返回值将会自动写入到/var/mobile/cmdResultOpenUrl.plist文件。
启动 361一键新机:
runApp("cn.tinyapps.RST"); mSleep(5*1000); //等待5秒钟再进行后续调用
1、一键新机
●指令:http://127.0.0.1:361/cmd?fun=newDevice&bid=com.xxx.a,cn.yyy.b
●参数:
a.fun=newDevice表示一键新机
b.bid表示目标App,如果是多个的话,用逗号分隔
●返回值:status=-1表示无权限;status=1 运行成功; status=0运行失败(可以通过errMsg获取错误信息)
●请注意:该接口是异步操作,调用该接口后得到返回值只说明接口调用是否成功,不意味着对应操作已执行结束。要判断是否真正执行结束,可以检测该文件 /var/mobile/script_status 是否存在:不存在说明执行尚未结束,存在说明执行结束。存在的话可以通过判断文件中的值来确定是否执行成功,如果文件中的值是1,则代表执行成功,为0代表执行失败。
2、生成备份记录
●指令:http://127.0.0.1:361/cmd?fun=newBackup&bid=com.xxx.a
●参数:
a.fun=newBackup表示生成备份记录
b.bid表示目标App,如果是多个的话,用逗号分隔
●返回值:status=-1表示无权限;status=1 运行成功; status=0运行失败(可以通过errMsg获取错误信息)
●请注意:该接口是异步操作,调用该接口后得到返回值只说明接口调用是否成功,不意味着对应操作已执行结束。要判断是否真正执行结束,可以检测该文件 /var/mobile/script_status 是否存在:不存在说明执行尚未结束,存在说明执行结束。存在的话可以通过判断文件中的值来确定是否执行成功,如果文件中的值是1,则代表执行成功,为0代表执行失败。
3、获取备份记录
●指令:http://127.0.0.1:361/cmd?fun=getBackups&bid=com.xxx.a
●参数:
a.fun=getBackups表示获取备份记录
b.bid表示目标App,如果是多个的话,用逗号分隔
●返回值:status=1 运行成功; status=0运行失败(可以通过errMsg获取错误信息)
a.如果status为1,则可以通过backups获取到其备份记录信息,通过currentBackupId获取到与当前的目标app相关联的备份记录在backups中的序列号
b.backups是一个数组,其中每一个元素是个dictionary,其中有3个key,name表示备份的名字,time表示备份的时间
●返回值示例:
{status:1, backups:{[ {name:'backup0001', time:1463637809}, {name:'backup0002', time:1463647909}]}, currentBackupId:0}
4、重命名备份记录
●指令A:http://127.0.0.1:361/cmd? fun=renameBackup &bid=PumpkinCat.WordBlades &index=3&name=goodname
●指令B:http://127.0.0.1:361/cmd? fun=renameBackup &bid=PumpkinCat.WordBlades &indexup=1&name=goodname
●指令C:http://127.0.0.1:361/cmd? fun=renameBackup &bid=PumpkinCat.WordBlades &backname=老名字&name=goodname
●指令D:http://127.0.0.1:361/cmd? fun=renameBackup &bid=PumpkinCat.WordBlades
●参数:
a.fun=renameBackup表示重命名单条备份记录
b.bid表示目标App,如果是多个的话,用逗号分隔
c.index表示备份记录的序列号,序列号即备份记录从上到下排序的序号,与361一键新机界面上一致,从上到下依次为0, 1, 2, 3, 4, 5, ....,也可以认为备份条目的行号
d.indexup取0或者1,以与目标app相关联的备份的index为基准,对其上一条或下一条备份记录改名,为1表示上一条,为0表示下一条。
e.backname表示要操作的目标备份记录的名字(index、indexup、backname三项只需其中一项;三者优先顺序 index>indexup>backname:提供了index的话,则自动忽略indexup和backname的值;只提供indexup和backname的值的话,则忽略backname的值)
f.如果不提供index、indexup、backname参数,则默认为对当前的备份条目操作(即指令D)
g.name表示备份记录的新名字
●返回值:status=1 运行成功; status=0运行失败(可以通过errMsg获取错误信息)
5、删除指定备份记录
●指令A:http://127.0.0.1:361/cmd? fun=deleteBackup &bid=PumpkinCat.WordBlades &index=3
●指令B:http://127.0.0.1:361/cmd? fun=deleteBackup &bid=PumpkinCat.WordBlades &indexup=0
●指令C:http://127.0.0.1:361/cmd? fun=deleteBackup &bid=PumpkinCat.WordBlades &backname=老名字
●指令D:http://127.0.0.1:361/cmd? fun=deleteBackup &bid=PumpkinCat.WordBlades
●参数:
a.fun=deleteBackup表示删除指定的备份记录
b.bid表示目标App,如果是多个的话,用逗号分隔
c.index表示备份记录的序列号,序列号即备份记录从上到下排序的序号,与361一键新机界面上一致,从上到下依次为0, 1, 2, 3, 4, 5, ....,也即备份条目的行号。为-1则表示删除对应app的所有记录
d.indexup取0或者1,以与目标app相关联的备份的index为基准,删除其上一条或下一条备份记录,为1表示上一条,为0表示下一条。
e.backname表示要操作的目标备份记录的名字(index、indexup、backname三项只需其中一项;三者优先顺序 index>indexup>backname:提供了index的话,则自动忽略indexup和backname的值;只提供indexup和backname的值的话,则忽略backname的值)
f.如果不提供index、indexup、backname参数,则默认为删除当前的备份条目(即指令D)
●返回值:status=1 运行成功; status=0运行失败(可以通过errMsg获取错误信息)
6、还原备份记录
●指令A:http://127.0.0.1:361/cmd? fun=restoreBackup &bid=PumpkinCat.WordBlades &index=3
●指令B:http://127.0.0.1:361/cmd? fun=restoreBackup &bid=PumpkinCat.WordBlades &indexup=1
●指令C:http://127.0.0.1:361/cmd? fun=restoreBackup &bid=PumpkinCat.WordBlades &backname=老名字
●参数:
a.fun=restoreBackup表示还原备份记录
b.bid表示目标App,如果是多个的话,用逗号分隔
c.index表示备份记录的序列号,序列号即备份记录从上到下排序的序号,与361一键新机界面上一致,从上到下依次为0, 1, 2, 3, 4, 5, ....,也即备份条目的行号。
d.indexup取0或者1,以与目标app相关联的备份的index为基准,恢复到其上一条或下一条备份记录,为1表示上一条,为0表示下一条。
e.backname表示要操作的目标备份记录的名字(index、indexup、backname三项只需其中一项;三者优先顺序 index>indexup>backname:提供了index的话,则自动忽略indexup和backname的值;只提供indexup和backname的值的话,则忽略backname的值)
●返回值:status=1 运行成功; status=0运行失败(可以通过errMsg获取错误信息)
●请注意:该接口是异步操作,调用该接口后得到返回值只说明接口调用是否成功,不意味着对应操作已执行结束。要判断是否真正执行结束,可以检测该文件 /var/mobile/script_status 是否存在:不存在说明执行尚未结束,存在说明执行结束。存在的话可以通过判断文件中的值来确定是否执行成功,如果文件中的值是1,则代表执行成功,为0代表执行失败。
7、获取虚拟设备信息
●指令:http://127.0.0.1:361/cmd? fun=getCurrentVDInfo &bid=PumpkinCat.WordBlades
●参数:
a.fun=getCurrentVDInfo表示获取虚拟设备信息
b.bid表示某个目标App,或同一组里的多个目标app,用逗号分隔
●返回值:status=1 运行成功,返回idfa、idfv、ios版本,ssid、imie、udid等其他虚拟设备信息; status=0运行失败(可以通过errMsg获取错误信息)
●返回值示例:
{status:1, info:[{idfa:'89B0A172-57C2-46E6-BB1D-0D250C270EB2'}, {ios:'12.1.1'}] }
8、设置虚拟设备信息IDFA
●指令:http://127.0.0.1:361/cmd? fun=setCurrentVDInfo &bid=PumpkinCat.WordBlades &idfa=89B0A172-57C2-46E6-BB1D-0D250C270EB2
●参数:
a.fun=setCurrentVDInfo表示获取虚拟设备信息,对应的目标app必须已经具有虚拟设备信息才行,如果app对应的环境是真实机器,则执行此指令无效
b.bid表示某个目标App,或同一组里的多个目标app,用逗号分隔
c.idfa表示新设置的idfa
●返回值:status=1 运行成功; status=0运行失败(可以通过errMsg获取错误信息)
9、获取机器码权限信息
●指令:http://127.0.0.1:361/cmd?fun=license
●参数:fun=license表示获取权限
●返回值:status=1 运行成功; status=0运行失败(可以通过errMsg获取错误信息) 如果status=1,则可以通过deviceId获取到机器码,endDate获取到有效截止时间
10、开关自动备份/App自动启动/自动更换IP
●指令:http://127.0.0.1:361/cmd?fun=autoBackup&open=1
●参数:
a.fun=autoBackup表示开关自动备份指令;fun=autoAppLaunch表示App自动启动;fun=autoIP表示自动更换IP
b.open=1表示开启,为0表示关闭
●返回值:status=1 运行成功; status=0运行失败(可以通过errMsg获取错误信息)
11、卸载指定App
●指令:http://127.0.0.1:361/cmd? fun=uninstallApp &bid=PumpkinCat.WordBlades
●参数:
a.fun=uninstallApp表示卸载app
b.bid表示目标App,如果是多个的话,用逗号分隔
●返回值:status=1 运行成功; status=0运行失败(可以通过errMsg获取错误信息)
12、跳转到指定App
●指令:http://127.0.0.1:361/cmd? fun=goToApp &bid=PumpkinCat.WordBlades
●参数:
a.fun=goToApp表示卸载app
b.bid表示目标App,只能是一个
●返回值:status=1 运行成功; status=0运行失败(可以通过errMsg获取错误信息)
9、示例:
function getLicenseInfo()
local sz = require("sz");
local http = require("szocket.http");
local res, code = http.request("http://127.0.0.1:361/cmd?fun=license");
if code == 200 then
local resJson = sz.json.decode(res);
local status = resJson.status;
if status == 1 then
local deviceId = resJson.deviceId;
local endDateTimestamp = resJson.endDate;
local endDate = os.date("%Y:%m:%d %H:%M",endDateTimestamp)
dialog("deviceId: ".. deviceId .." endDate " .. endDate, 2);
end;
if status == 0 then
local errMsg = resJson.errMsg;
dialog("error: ".. errMsg, 2);
end
end