# Auto.js 快速接入

泡椒云网络验证提供了官方的 Autojs 封装库,方便 Autojs 开发者接入。

# 接入须知

# 获取方式

下载地址(含 Auto.js Pro 9 Node.js 版本):请登录开发者后台,在首页「最新 SDK」处下载
或者加群1018871394在群文件下载 SDK,有问题也可在此群交流。

# 使用方式

先将下载到的PJYSDK.js文件用编辑器打开,选中所有复制粘贴到你自己的 main.js 代码文件中。

# 视频教程

一个示例:

/* ↑ 将PJYSDK.js文件中的代码复制粘贴到上面 ↑ */

// 初始化
// AppKey 和 AppSecret 在泡椒云开发者后台获取
let pjysdk = new PJYSDK('bnsekoso6itblafodqe6', 'm3p0lkODcCUpyf3o6DkktAQSJqqLygeV');
pjysdk.debug = true; // 开发时建议开启debug,有详细输出
pjysdk.SetCard('IWPSJKeEeMaHb7dXZVVSb42SLUUWIPAMBHaAWKLO');

// 监听心跳失败事件
pjysdk.event.on('heartbeat_failed', function(hret) {
  toastLog(hret.message);
  if (hret.code === 10214) {
    sleep(200);
    threads.shutDownAll(); // 退出脚本
  }
  log('心跳失败,尝试重登...');
  sleep(2000);
  threads.start(function() {
    let login_ret = pjysdk.CardLogin();
    if (login_ret.code === 0) {
      log('重登成功');
    } else {
      toastLog(login_ret.message); // 重登失败
      sleep(200);
      threads.shutDownAll(); // 退出脚本
    }
  });
});

// 当Autojs脚本正常或者异常退出时会触发exit事件
events.on('exit', function() {
  pjysdk.CardLogout(); // 调用退出登录 某些版本可能需要开新线程调用Logout
  log('结束运行');
});

// 卡密登录
// 登录成功后将自动启动一个线程发送心跳包,开发者只需监听心跳失败事件做处理就行了
// 注意在UI里调用泡椒云的API需要开新线程再调用
let login_ret = pjysdk.CardLogin();
if (login_ret.code === 0) {
  // 登录成功,后面写你的业务代码
} else {
  toast(login_ret.message); // 登录失败的提示信息
  threads.shutDownAll(); // 退出脚本
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

# 可更改变量

  • pjysdk.debug : bool 型,默认为true,开启后会在控制台输出每次请求的详细信息,方便调试
  • pjysdk._device_id : string 型,设备号默认会自动获取,不建议修改。如果你有更好的一机一码的生成方案,可在初始化后修改该值
  • pjysdk._auto_heartbeat : bool 型,是否自动开启心跳,默认true,不建议修改。
  • pjysdk._token : string 型,登录成功返回的 token。对于退出软件未调用退出登录,返回多开上限的情况,可以在登录成功后本地存下来,下次登录前先设置 token 调用退出登录
  • pjysdk._retry_count : int 型,请求失败重试次数,默认 9 次。调大重试次数和软件配置里的 token 有效期,有助于改善软件运行稳定性

# 可获取变量

注意

以下变量都为登录成功后才能取到值的。

  • pjysdk.login_result.card_type : 卡密类型,例如:年卡
  • pjysdk.login_result.expires : 过期时间,例如:2020-10-16 00:47:58
  • pjysdk.login_result.expires_ts : 过期时间戳,例如:1602780478
  • pjysdk.login_result.config : 卡密或用户配置,开发者可通过接口自定义的
  • pjysdk.is_trial : 是否是试用登录

# 初始化

# 初始化卡密

# 语法

pjysdk.SetCard(card);
1

# 参数

参数名 必传 类型 参数说明
card string 用户填写的卡密(长度不超过 45 位)

# 初始化用户账号

# 语法

pjysdk.SetUser(username, password);
1

# 参数

参数名 必传 类型 参数说明
username string 用户名(长度不能超过 20 位)
password string 用户密码(长度 6-30 位)

# 获取时间戳(网络时间)

# 语法

let ret = pjysdk.getTimestamp();
1

# 参数

# 返回值

数字类型,例:1602780478

# 获取心跳结果

# 语法

let ret = pjysdk.GetHeartbeatResult();
1

# 参数

# 返回值

Object 类型,例:{"code": 0, "message": "ok"}

# 获取剩余时长

# 语法

let ret = pjysdk.GetTimeRemaining();
1

# 参数

# 返回值

数字类型,剩余多少秒,例:1024

# 卡密登录

注意

调用此接口前需调用 pjysdk.SetCard(card) 初始化卡密
登录成功后将自动启动一个线程发送心跳包,开发者就无需关注发送心跳包的细节。
开发者只需在自己的脚本中通过调用 pjysdk.GetHeartbeatResult() 获取当前心跳结果。

# 语法

let ret = pjysdk.CardLogin();
1

# 参数

# 返回值

Object 类型,例:参考接口返回

# 卡密退出登录

# 语法

let ret = pjysdk.CardLogout();
1

# 参数

# 返回值

Object 类型,例:{"code": 0, "message": "OK"}

# 卡密解绑设备

注意

请先进入开发者后台软件管理页面,配置软件开启设备绑定且可解除绑定。
该接口只能在卡密登录后调用。更多说明

# 语法

let ret = pjysdk.CardUnbindDevice();
1

# 参数

# 返回值

Object 类型,例:{"code": 0, "message": "OK"}

# 卡密设置解绑密码

说明

请先进入开发者后台软件管理页面,配置软件开启设备绑定且可解除绑定。
该密码用于绑定设备丢失或者其它原因导致无法在老设备登录时解绑设备。

# 语法

let ret = pjysdk.SetCardUnbindPassword(password);
1

# 参数

参数名 必传 类型 参数说明
password string 解绑密码(6-10 位数字和字母组合的字符串)

# 返回值

Object 类型,例:{"code": 0, "message": "OK"}

# 卡密通过密码解绑设备

说明

请先进入开发者后台软件管理页面,配置软件开启设备绑定且可解除绑定。
该接口用于绑定设备丢失或者其它原因导致无法在老设备登录时,通过解绑密码解绑设备。

# 语法

let ret = pjysdk.CardUnbindDeviceByPassword(password);
1

# 参数

参数名 必传 类型 参数说明
password string 解绑密码(6-10 位数字和字母组合的字符串)

# 返回值

Object 类型,例:{"code": 0, "message": "OK"}

# 卡密充值(以卡充卡)

# 语法

let ret = pjysdk.CardRecharge(card, use_card);
1

# 参数

参数名 必传 类型 参数说明
card string 被充值的卡密(长度不超过 45 位)
use_card string 充值使用的卡密(长度不超过 45 位)

# 返回值

Object 类型,例:{"code": 0, "message": "OK"}

# 用户注册(通过卡密)

# 语法

let ret = pjysdk.UserRegister(username, password, card);
1

# 参数

参数名 必传 类型 参数说明
username string 用户名(长度不能超过 20 位)
password string 用户密码(长度 6-30 位)
card string 注册使用的卡密(长度不超过 45 位)

# 返回值

Object 类型,例:{"code": 0, "message": "ok"}

# 用户登录

注意

调用此接口前需调用 pjysdk.SetUser(username, password) 初始化用户账号密码
登录成功后将自动启动一个线程发送心跳包,开发者就无需关注发送心跳包的细节。
开发者只需在自己的脚本中通过调用 pjysdk.GetHeartbeatResult() 获取当前心跳结果。

# 语法

let ret = pjysdk.UserLogin();
1

# 参数

# 返回值

Object 类型,例:参考接口返回

# 用户退出登录

# 语法

let ret = pjysdk.UserLogout();
1

# 参数

# 返回值

Object 类型,例:{"code": 0, "message": "OK"}

# 用户修改密码

# 语法

let ret = pjysdk.UserChangePassword(username, password, new_password);
1

# 参数

参数名 必传 类型 参数说明
username string 用户名(长度不能超过 20 位)
password string 当前密码(长度 6-30 位)
new_password string 新密码(长度 6-30 位)

# 返回值

Object 类型,例:{"code": 0, "message": "OK"}

# 用户充值(通过卡密)

# 语法

let ret = pjysdk.UserRecharge(username, card);
1

# 参数

参数名 必传 类型 参数说明
username string 用户名(长度不能超过 20 位)
card string 充值使用的卡密(长度不超过 45 位)

# 返回值

Object 类型,例:{"code": 0, "message": "OK"}

# 用户解绑设备

注意

只能在用户登录后调用。更多说明

# 语法

let ret = pjysdk.UserUnbindDevice();
1

# 参数

# 返回值

Object 类型,例:{"code": 0, "message": "OK"}

# 试用登录

注意

登录成功后将自动启动一个线程发送心跳包,开发者就无需关注发送心跳包的细节。
只需在自己的脚本中通过调用 pjysdk.GetHeartbeatResult() 获取当前心跳结果。

# 语法

let ret = pjysdk.TrialLogin();
1

# 参数

# 返回值

Object 类型,例:参考接口返回

# 试用退出登录

# 语法

let ret = pjysdk.TrialLogout();
1

# 参数

# 返回值

Object 类型,例:{"code": 0, "message": "OK"}

# 获取卡密配置

# 语法

let ret = pjysdk.GetCardConfig();
1

# 参数

# 返回值

Object 类型,例:参考接口返回

# 更改卡密配置

# 语法

let ret = pjysdk.UpdateCardConfig(config);
1

# 参数

参数名 必传 类型 参数说明
config string 自定义配置(长度不能超过 512 位)

# 返回值

Object 类型,例:{"code": 0, "message": "OK"}

# 获取用户配置

# 语法

let ret = pjysdk.GetUserConfig();
1

# 参数

# 返回值

Object 类型,例:参考接口返回

# 更改用户配置

# 语法

let ret = pjysdk.UpdateUserConfig(config);
1

# 参数

参数名 必传 类型 参数说明
config string 自定义配置(长度不能超过 512 位)

# 返回值

Object 类型,例:{"code": 0, "message": "OK"}

# 获取软件配置

# 语法

let ret = pjysdk.GetSoftwareConfig();
1

# 参数

# 返回值

Object 类型,例:参考接口返回

# 获取软件公告

# 语法

let ret = pjysdk.GetSoftwareNotice();
1

# 参数

# 返回值

Object 类型,例:参考接口返回

# 获取软件最新版本

# 语法

let ret = pjysdk.GetSoftwareLatestVersion(current_ver);
1

# 参数

参数名 必传 类型 参数说明
current_ver string 当前本地的版本(长度不能超过 30 位)

# 返回值

Object 类型,例:参考接口返回

# 获取远程变量

# 语法

let ret = pjysdk.GetRemoteVar(key);
1

# 参数

参数名 必传 类型 参数说明
key string 远程变量名(长度不能超过 64 位)

# 返回值

Object 类型,例:参考接口返回

# 获取远程数据

# 语法

let ret = pjysdk.GetRemoteData(key);
1

# 参数

参数名 必传 类型 参数说明
key string 远程数据 key(长度不能超过 64 位)

# 返回值

Object 类型,例:参考接口返回

# 操作远程数据

# 新增远程数据

# 语法

let ret = pjysdk.CreateRemoteData(key, value);
1

# 参数

参数名 必传 类型 参数说明
key string 远程数据 key(长度不能超过 64 位)
value string 远程数据值(长度不能超过 256 位)

# 返回值

Object 类型,例:{"code": 0, "message": "OK"}

# 修改远程数据

# 语法

let ret = pjysdk.UpdateRemoteData(key, value);
1

# 参数

参数名 必传 类型 参数说明
key string 远程数据 key(长度不能超过 64 位)
value string 远程数据值(长度不能超过 256 位)

# 返回值

Object 类型,例:{"code": 0, "message": "OK"}

# 删除远程数据

# 语法

let ret = pjysdk.DeleteRemoteData(key);
1

# 参数

参数名 必传 类型 参数说明
key string 远程数据 key(长度不能超过 64 位)

# 返回值

Object 类型,例:{"code": 0, "message": "OK"}

# 调用远程函数

# 语法

let ret = pjysdk.CallRemoteFunc(func_name, params);
1

# 示例

远程函数为

function add(a, b) {
  return a + b;
}
1
2
3

脚本中调用

let ret = pjysdk.CallRemoteFunc('add', [1, 2]);
if (ret.code == 0) {
  log(ret.result.return);
} else {
  log(ret.message);
}
1
2
3
4
5
6

# 参数

参数名 必传 类型 参数说明
func_name string 远程函数名(长度不能超过 64 位)
params array 参数列表,例:Array(1, 2)

# 返回值

Object 类型,例:{"code": 0, "message": "OK", "result": {"return": 3}}