# JsDroid 接入

泡椒云网络验证提供了官方的 JsDroid 插件,方便 jsd 开发者接入。支持 jsd2 和 jsd3 。

# 接入须知

# 获取方式

下载地址:https://www.lanzous.com/b015bkd6h
或者加群1018871394在群文件下载插件,有问题也可在此群交流。

# 使用方式

# JsDroid2:

PJYSDK.jar文件解压放入到你的jsd项目的lib目录下。
然后在IDEA编辑器中,右键lib目录,点击添加到库

# JsDroid3:

PJYSDK.jar文件解压放入到JSDK安装目录的plugin目录下。
(如:D:\JsDroid3.2\JSDK\plugin)

一个示例:

import com.paojiaoyun.plugin.PJYSDK

// 初始化
pjysdk = new PJYSDK(this, "bnsekoso6itblafodqe6", "m3p0lkODcCUpyf3o6DkktAQSJqqLygeV")
pjysdk.debug = true  // 开发时建议开启debug,有详细输出

// 心跳失败回调
pjysdk.onHeartbeatFailed({ Object ret ->
    print(ret.message)
    toast(ret.message)
    print("退出脚本...")
    sleep(200)  // 防止print在ADB传输过程中,被结束命令打断
    exit()
})

// 设置卡密
pjysdk.setCard("IWPSJKeEeMaHb7dXZVVSb42SLUUWIPAMBHaAWKLO")

// 登录成功会自动开启心跳任务
ret = pjysdk.CardLogin()
if (ret.code != 0) {  // 如果登录失败 
    print(ret.message)
    sleep(200)  // 防止print在ADB传输过程中,被结束命令打断
    exit()
}

print("登录成功")
// 测试用,hold住主线程不要退出,记得删除,后面应该是你的代码了
while (true) { 
    print(pjysdk.GetHeartbeatResult())
    sleep(10000)
}

sleep(200)
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

# 可更改变量

  • pjysdk.debug : bool型,默认为true,开启后会在控制台输出每次请求的详细信息,方便调试

# 可获取变量

注意

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

  • 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位)

# 重设设备号

注意

设备号默认会自动获取,不建议修改。
如果你有更好的一机一码的生成方案,可在初始化后重设。

# 语法

pjysdk.setDeviceID(device_id)
1

# 参数

参数名 必传 类型 参数说明
device_id string 用户设备号

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

# 语法

ret = pjysdk.getTimestamp()
1

# 参数

# 返回值

数字类型,例:1602780478

# 获取心跳结果

# 语法

ret = pjysdk.GetHeartbeatResult()
1

# 参数

# 返回值

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

# 获取剩余时长

# 语法

ret = pjysdk.GetTimeRemaining()
1

# 参数

# 返回值

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

# 卡密登录

注意

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

# 语法

ret = pjysdk.CardLogin()
1

# 参数

# 返回值

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

# 卡密退出登录

# 语法

ret = pjysdk.CardLogout()
1

# 参数

# 返回值

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

# 卡密解绑设备

说明

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

# 语法

ret = pjysdk.CardUnbindDevice()
1

# 参数

# 返回值

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

# 卡密设置解绑密码

说明

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

# 语法

ret = pjysdk.setCardUnbindPassword(password)
1

# 参数

参数名 必传 类型 参数说明
password string 解绑密码,6-10位

# 返回值

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

# 卡密通过密码解绑设备

说明

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

# 语法

ret = pjysdk.CardUnbindDeviceByPassword(password)
1

# 参数

参数名 必传 类型 参数说明
password string 解绑密码,6-10位

# 返回值

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

# 卡密充值(以卡充卡)

# 语法

ret = pjysdk.CardRecharge(card, use_card)
1

# 参数

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

# 返回值

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

# 用户注册(通过卡密)

# 语法

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() 获取心跳结果。

# 语法

ret = pjysdk.UserLogin()
1

# 参数

# 返回值

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

# 用户退出登录

# 语法

ret = pjysdk.UserLogout()
1

# 参数

# 返回值

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

# 用户修改密码

# 语法

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"}

# 用户充值(通过卡密)

# 语法

ret = pjysdk.UserRecharge(username, card)
1

# 参数

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

# 返回值

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

# 获取卡密配置

# 语法

ret = pjysdk.GetCardConfig()
1

# 参数

# 返回值

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

# 更改卡密配置

# 语法

ret = pjysdk.UpdateCardConfig(config)
1

# 参数

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

# 返回值

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

# 获取用户配置

# 语法

ret = pjysdk.GetUserConfig()
1

# 参数

# 返回值

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

# 更改用户配置

# 语法

ret = pjysdk.UpdateUserConfig(config)
1

# 参数

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

# 返回值

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

# 获取软件配置

# 语法

ret = pjysdk.GetSoftwareConfig()
1

# 参数

# 返回值

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

# 获取软件公告

# 语法

ret = pjysdk.GetSoftwareNotice()
1

# 参数

# 返回值

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

# 获取软件最新版本

# 语法

ret = pjysdk.GetSoftwareLatestVersion(current_ver)
1

# 参数

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

# 返回值

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

# 试用登录

注意

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

# 语法

ret = pjysdk.TrialLogin()
1

# 参数

# 返回值

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

# 试用退出登录

# 语法

ret = pjysdk.TrialLogout()
1

# 参数

# 返回值

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

# 卡密解绑设备

注意

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

# 语法

ret = pjysdk.CardUnbindDevice()
1

# 参数

# 返回值

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

# 卡密设置解绑密码

说明

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

# 语法

ret = pjysdk.setCardUnbindPassword(password)
1

# 参数

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

# 返回值

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

# 卡密通过密码解绑设备

说明

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

# 语法

ret = pjysdk.CardUnbindDeviceByPassword(password)
1

# 参数

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

# 返回值

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

# 用户解绑设备

注意

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

# 语法

ret = pjysdk.UserUnbindDevice()
1

# 参数

# 返回值

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

# 获取远程变量

# 语法

ret = pjysdk.GetRemoteVar(key)
1

# 参数

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

# 返回值

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

# 获取远程数据

# 语法

ret = pjysdk.GetRemoteData(key)
1

# 参数

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

# 返回值

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

# 操作远程数据

# 新增远程数据

# 语法

ret = pjysdk.CreateRemoteData(key, value)
1

# 参数

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

# 返回值

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

# 修改远程数据

# 语法

ret = pjysdk.UpdateRemoteData(key, value)
1

# 参数

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

# 返回值

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

# 删除远程数据

# 语法

ret = pjysdk.DeleteRemoteData(key)
1

# 参数

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

# 返回值

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

# 调用远程函数

# 语法

ret = pjysdk.CallRemoteFunc(func_name, params)
1

# 示例

远程函数为

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

脚本中调用

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}}