Skip to main content

全局模块

说明

全局模块是指直接调用方法就可以使用的模块,无需使用前缀对象名称

应用版本

version 获取应用程序版本

  • 获取应用程序版本
  • @return 字符串 例如 2.9.0
function main() {
logd(version())
}

main();

脚本启停

exit 退出脚本

  exit();

isScriptExit 是否已退出脚本

  • 判断EC运行的当前线程是否处于退出状态,可用判断脚本是否退出,或者子线程是否退出
  • @return true 已退出
function main() {
try {
while (true) {
sleep(1000)
logd("222")
if (isScriptExit()) {
break
}
}
logd("222")
} catch (e) {
logd(e)
if (isScriptExit()) {
return
}
}
}

main();

sleep 暂停执行

  • 休眠
  • @param miSecond 毫秒
function main() {
sleep(1000);
}

main();

execScript 载入JS

  • 执行JS文件或者内容
  • @param a_execType 1=文件,2=直接是JS内容
  • @param _acontent 路径[参考file模块]例如/var/a.js或者js的内容
  • @return 布尔型,true代表执行成功, false代表失败
function main() {
let d = "logd(1)"
let dx = execScript(2, d);
while (true) {
sleep(2000);
loge("fsadffsad")
}
}

main();

restartScript 重启脚本

  • 支持EC iOS脱机版本 2.2.0+
  • 重启脚本,适合无限循环,或者有异常的情况可以再次执行,
  • 注意: 该方法威力巨大,请自行控制好是否自动重启,否则只能强杀进程才能停止
  • @param path 新的IEC路径,如果不需要可以填写null
  • @param stopCurrent 是否停止当前的脚本
  • @param delay 延迟多少秒后执行
  • @return bool true 代表成功 false 代表失败
function main() {
logd("我是在脚本运行的");
setStopCallback(function () {
restartScript(null, false, 3)
});

//setExceptionCallback(function (){
// restartScript(null,true,3)
//});
sleep(1000);
logd("脚本结束")
}

main();

js导入

require 导入JS

  • 导入JS模块
  • @param path 路径,例如 本地js文件或者 EC工程中的文件路径 slib/a.js
  • @return 模块对象
function main() {
//注意,js文件不要放在js目录或下级目录中
//注意,EC iOS 脱机版本 1.3.+
let lib1 = require("res/lib.js")
new lib1(1, 2, 3).say()
let lib2 = require("res/lib2")
logd(lib2.add(1, 2))
}

main();
//视频介绍:https://www.bilibili.com/video/BV1ES4y1f7qV?vd_source=2abc6be820f5a6382ebc0ceafc5dbe00&p=39&spm_id_from=333.788.videopod.episodes
// res/lib2.js 内容
function add(a, b) {
return a + b;
}

var a1 = 1
module.exports = {add, a1};
// res/lib2js 内容
module.exports = function (name, age, money) {
this.name = name;
this.age = age;
this.money = money;
this.say = function () {
console.log('我的名字叫:' + this.name + ',我今年' + this.age + '岁,月薪为:' + this.money + '元;')
}
};

JSON处理

JSON.stringify 格式化为JSON字符串

  • 格式化对象为JSON字符串
  • @param 对象
  • @return 字符串
function main() {
var m = {"sss": "a"};
var d = JSON.stringify(m);
logd(d);
}

main();

JSON.parse 转换为JSON对象

  • 格式化JSON字符串为对象
  • @param 字符串
  • @return 对象
function main() {
var m = {"sss": "a"};
var d = JSON.stringify(m);
d = JSON.parse(d);
logd(d);
}

main();

监听脚本和服务

setStopCallback 脚本停止监听

  • 支持EC iOS脱机版本 2.2.0+
function main() {
setStopCallback(function () {
logd("fdsafsad 我是停止回调")
});
var result = sleep(1000);
if (result) {
logd("成功");
} else {
logd("失败");
}
}

main();

setExceptionCallback 脚本异常停止监听

  • 支持EC iOS脱机版本 2.2.0+
function main() {
setExceptionCallback(function (msg) {
logd(" 异常停止消息: " + msg)
});
var result = sleep(1000);
if (result) {
logd("成功");
} else {
logd("失败");
}
//这里有异常抛出
result.length();
}

main();

日志消息方法

setLogLevel 设置日志的等级

  • 设置日志的等级,可以根据情况关闭或开启日志
  • @param level 日志等级,值分别是 debug,info,warn,error,off,排序分别是debug < info < warn < error < off,
  • 例如 off代表关闭所有级别日志,debug代表打印包含logd,logi,logw,loge的日志,info代表打印包含logi,logw,loge的日志,warn 代表打印包含logw,loge的日志
  • @param displaylogd 是否展示logd消息,这个参数未实现
  • @return {bool} 布尔型 true代表成功 false代表失败
function main() {
setLogLevel("info", false)
for (var i = 0; i < 1; i++) {
sleep(10);
//logd(time()+" debug");
logi(time() + " info");
//logw(time()+" warn");
// loge(time()+" error");
logd("--- " + time());
}
//logd(time()+" 222");
}

main();

logd 调试日志

  • 调试日志
  • @param msg 消息字符串
function main() {
logd("msg");
//可变参数写法
logd("我是消息{},{}", "测试1", 2)
}

main();

loge 错误日志

  • 错误日志
  • @param msg 消息字符串
function main() {
loge("msg");
//可变参数写法
loge("我是消息{},{}", "测试1", 2)
}

main();

logw 警告日志

  • 警告日志
  • @param msg 消息字符串
function main() {
logw("msg");
//可变参数写法
logw("我是消息{},{}", "测试1", 2)
}

main();

logi 信息日志

  • 信息日志
  • @param msg 消息字符串
function main() {
logi("msg");
//可变参数写法
logi("我是消息{},{}", "测试1", 2)
}

main();

setSaveLogEx 保存日志

  • 设置保存日志信息到文件中,可以使用爱思软件导出日志
  • EC iOS 3.13+新增了level参数
  • @param save 是否保存
  • @param level 日志等级,值分别是 debug,info,warn,error,off,排序分别是 debug<info<warn<error
  • 例如 off代表关闭所有级别日志,debug代表打印包含logd,logi,logw,loge的日志,info代表打印包含logi,logw,loge的日志,warn 代表打印包含logw,loge的日志
  • @return 保存日志文件的目录
function main() {
let d = setSaveLogEx(true, "debug")
logd(d)
}

main();

日志窗口

setLogViewSizeEx 设置日志窗口属性

  • 设置日志窗口大小扩展函数
  • @param map 例如
  • 解释:
  • x: 起始 x 位置,x坐标暂时不生效
  • y: 起始 Y 位置,y坐标暂时不生效
  • w:宽度
  • h:高度
  • textSize:日志的字体大小
  • textColor: 文字颜色 #336699
  • line: 展示多少行,默认是十行
  • backgroundColor:背景颜色,例如 #336699
  function setlog() {
var m = {
"x": 2,
"y": 2,
"w": 300,
"h": 400,
"textSize": 26,
"backgroundColor": "#336699",
"textColor": "#000000"
}
//让主程序在前台
takeMeToFront()
sleep(1000)
showLogWindow();

logd("showLogWindow() " + showLogWindow())
for (let i = 0; i < 11; i++) {
sleep(1000)
logd("么我" + new Date())
if (i == 2) {
logd("closeLogWindow() " + closeLogWindow())
setLogViewSizeEx(m);
}
if (i == 10) {
logd("showLogWindow() " + showLogWindow())
}
}
}

setlog();

showLogWindow 显示日志窗口

  • [主程序在后台进行无法使用]
  • 显示日志窗口,必须iOS设备支持画中画功能,并且开启画中画
  • @returns {boolean} true代表成功,false代表失败
  function setlog() {
var m = {
"x": 2,
"y": 2,
"w": 300,
"h": 400,
"textSize": 26,
"backgroundColor": "#336699",
"textColor": "#000000"
}
//让主程序在前台
takeMeToFront()
sleep(1000)
showLogWindow();

logd("showLogWindow() " + showLogWindow())
for (let i = 0; i < 11; i++) {
sleep(1000)
logd("么我" + new Date())
if (i == 2) {
logd("closeLogWindow() " + closeLogWindow())
setLogViewSizeEx(m);
}
if (i == 10) {
logd("showLogWindow() " + showLogWindow())
}
}
}

setlog();

closeLogWindow 关闭日志窗口

  • [主程序在后台进行无法使用]
  • 关闭日志窗口
  • @returns {boolean} true代表成功,false代表失败
  function setlog() {
var m = {
"x": 2,
"y": 2,
"w": 300,
"h": 400,
"textSize": 26,
"backgroundColor": "#336699",
"textColor": "#000000"
}
takeMeToFront()

showLogWindow();

logd("showLogWindow() " + showLogWindow())
for (let i = 0; i < 11; i++) {
sleep(1000)
logd("么我" + new Date())
if (i == 2) {
logd("closeLogWindow() " + closeLogWindow())
setLogViewSizeEx(m);
}
if (i == 10) {
logd("showLogWindow() " + showLogWindow())
}
}
}

setlog();

读取IEC包资源

readIECFileAsString 读取IEC内部文件为字符串

  • 读取IEC文件中的资源文件,并返回字符串
  • @param fileName 文件名称,如果放在某个文件夹下 需要加上文件名称
  • @return {string} 如果是null代表没内容
function main() {
var testData = readIECFileAsString("res/a.txt");
logd(testData)
}

main();

readResString 读取字符串资源

  • 读取res文件夹中的资源文件,并返回字符串
  • @param fileName 文件名称,不要加res前缀
  • @return string 如果是null代表没内容
function main() {
var testData = readResString("a.txt");
}

main();

readResAutoImage 读取Image资源

  • 读取res文件夹中的资源文件,并返 AutoImage 图片对象
  • @param fileName 文件名称,不要加res前缀
  • @return string 如果是null代表没内容
function main() {
var b = readResAutoImage("img/a.png");
}

main();

saveResToFile 保存资源为文件

  • 保存res文件夹中的资源文件到指定的路径
  • @param fileName 文件名称,不要加res前缀
  • @param path 要保存到的路径地址,例如/var/aa.txt
  • @return boolean|布尔型 true代表保存成功
function main() {
var b = saveResToFile("img/a.png", "/var/a.png");
}

main();

findIECFile 查找IEC的文件

  • 查找IEC的文件
  • @param dir 文件夹名称,null代表只读res/文件夹,没有默认是res文件夹,可以是类似 res/aaa/这样的文件夹
  • @param names 文件名称前缀,null代表不匹配, 例如aaa,多个前缀用|分割,例如 aaa|bb|cc
  • @param ext 文件扩展名 ,null代表不匹配,例如.png,多个扩展用|分割,例如 .png|.jpg|.bmp
  • @param recursion 是否递归子目录,true代表递归
  • @return {array} 文件名称JSON数组
function main() {
let res = findIECFile("res/", "dd2", ".png|.jpg", true)
logd("findIECFile {}", JSON.stringify(res));

}

main();

UI参数读取

deleteConfig 删除配置值

  • @param key 在UI界面中配置的key
  • @return {bool} true 代表成功 false 代表失败
function main() {
var testData = deleteConfig("test_key");
}

main();

readConfigInt 读取整型配置

  • @description 读取UI界面中的参数,返回是整型
  • @param key 在UI界面中配置的key
  • @return 整型,找不到就返回0
function main() {
var testData = readConfigInt("test_key");
}

main();

readConfigString 读取字符串配置

  • 读取UI界面中的参数,返回是字符串
  • @param key 在UI界面中配置的key
  • @return 字符串 找不到就返回空字符串
function main() {
var testData = readConfigString("test_key");
}

main();

readConfigBoolean 读取布尔型配置

  • 读取UI界面中的参数,返回是布尔型
  • @param key 在UI界面中配置的key
  • @return true 或者 false
function main() {
var testData = readConfigBoolean("test_key");
}

main();

getConfigJSON 取所有配置

  • 取得配置的JSON
  • @return JSON数据
function main() {
var testData = getConfigJSON();
}

main();

updateConfig 更新配置

  • 更新配置
  • @param key 键
  • @param value 值
  • @return {boolean} true 成功,false失败
function main() {
updateConfig("a", "sss");
}

main();

自动化服务相关

isServiceOk 自动化服务状态

  • 自动化服务是否正常
  • @return true或者false
function main() {
var result = isServiceOk();
}

main();

startEnv 启动自动化

  • 启动自动化服务环境,这个没有实现,根据函数打印的实际日志操作
  • @return true或者false
function main() {
var result = startEnv();
}

main();

告警发送

sendDingDingMsg 发送钉钉消息

  • 发送钉钉消息
  • 适合EC 脱机 2.0.0+
  • @param url 群组/部门 机器人Webhook地址
  • @param secret 群组/部门 机器人Webhook密钥, 可以不写使用关键字过滤方式
  • @param msg 要发送的消息
  • @param atMobile at手机号,多个用英文逗号隔开
  • @param atAll 是否at所有人,写true或者false
  • @return {string} 调用钉钉返回的json字符串结果,格式 {"errcode":0,"errmsg":"ok"},errcode=0代表成功其他都是错误
function main() {
// 演示的地址和密钥,具体获取参考这个网页: https://www.dingtalk.com/qidian/help-detail-20781541.html
// https://blog.csdn.net/weixin_44646065/article/details/110637713
let url = "https://oapi.dingtalk.com/robot/send?access_token=59735fa75d835dbfaa502bb42886fca982960d20sac5e1df6bba4dd1aba02999c"
let sec = "SEC2305788ab08e9534a33b86ae376697d3c9ee3095f331345d5ccd6e2e065ca8069"
var res = sendDingDingMsg(url, sec, "我是消息", "", true);
logd("sendDingDingMsg:" + res);
}

main();

时间相关

time 毫秒级当前时间戳

  • 毫秒级当前时间戳
  • @return {long} 毫秒级别的long时间
function main() {
logd(time());
}

main();

timeFormat 格式化时间

  • 格式化时间函数例如:yyyy-MM-dd HH:mm:ss
  • @return {string} 格式化之后的当前时间
function main() {
logd(timeFormat("yyyy-MM-dd HH:mm:ss"));
}

main();

console.time 计时开始

  • 计时开始,和timeEnd成对出现计算用时
  • @param label 标签
  • @return {long} 当前时间
function main() {
console.time("1");
sleep(1000)
logd(console.timeEnd("1"))
}

main();

console.timeEnd 计时结束

  • 计时结束,和timeEnd成对出现计算用时
  • @param label 标签
  • @return {long} 与计时开始的差值
function main() {
console.time("1");
sleep(1000)
logd(console.timeEnd("1"))
}

main();

其他

getDeviceExpTime 获取授权时间

  • 获取授权过期时间
  • 支持EC iOS脱机版本2.0+
  • @return {string} null 或者"",都是没有获取到,正常返回的是时间字符串
function main() {
var result = getDeviceExpTime();
logd(result);
}

main();

setPipCtrlScript 设置悬浮窗控制脚本启停

  • 设置悬浮窗是否可以控制脚本启停,防止脚本被其他视频软件占用时被停止
  • @param ctrl true 代表可以控制 false代表不可以控制
  • @returns {boolean} true代表成功,false代表失败
function main() {
setPipCtrlScript(true);
}

main();

random 随机函数

  • 取得某个范围的随机值
  • @param min 最小值
  • @param max 最大值
  • @return 整型 在min和max中间的值, 包含最大和最小值
function main() {
var result = random(100, 1000);
sleep(result);
}

main();

takeMeToFront 本程序带到前台运行

  • 把本程序带到前台运行
  • @return boolean true 代表成功 false代表失败
function main() {
var result = takeMeToFront();
logd(result);
}

main();

getMyBundleId 获取ipa自身的bundleId

  • 获取ipa自身的bundleId
  • 适配EC iOS 4.8.0+
  • return string 字符串
function main() {
var result = getMyBundleId();
logd(result);
}

main();

getMyAppName 获取ipa自身的应用名称

  • 获取ipa自身的应用名称
  • 适配EC iOS 4.8.0+
  • return string 字符串
function main() {
var result = getMyAppName();
logd(result);
}

main();