微信小程序

设备认证 SDK(安卓)

# 设备认证 SDK(安卓)

在系统集成 rpmbd 后,开发者需要在 Launcher 应用中接入设备认证 SDK,SDK 主要提供以下能力:

  • 注册设备 registerVoipDevice:将 model_id 和 SN 与设备绑定。一旦成功后 SN 不可修改
  • 获取拨打方票据 getCallerTicket:进行设备认证并从微信后台获取票据,设备端发起通话时传给 VOIP 通话插件的 initByCaller 接口的 voipToken 参数。

# 1. 下载 SDK

请在 此处 下载 SDK 的 aar 文件(名称为 voipsdk-x.x-release.aar)。具体使用可以参考示例代码

建议使用 1.3 及以上版本(物联网卡应使用 1.3.1 及以上版本)。低版本不支持并发调用 registerVoipDevice,请务必注意在前一次调用返回前不要重复调用。

# 2. 接口文档

注意:使用设备认证 SDK 前,清先保证 rmpbd 服务正常运行。

# 2.1 初始化 init

SDK 初始化,其它接口在调用之前需要保证 init 成功。

boolean init()

# 2.2 注册设备 registerVoipDevice

将 model_id 和 SN 与设备绑定,一旦成功后 appid、model_id、SN 均不能更换。

int registerVoipDevice(String appid, String model_id, String sn, String sn_ticket) throws Exception
# 注意事项(调用前必读
  • 注册设备成功后,会将 SN 固化至 EMMC/RPMB 分区中,标定此设备的唯一身份。SN 和 model_id 一经写入后续即不可更改
  • 此处使用的 SN,必须经过 WMPF 的 addDevice 接口作为 deviceId 注册,并与 WMPF 设备激活时使用的 deviceId 一致。 否则后续无法正常发起通话。
  • 1.3 以下版本 SDK,此接口严禁并发执行,务必在逻辑中保证一次 registerVoipDevice 返回后才能再次调用。
  • 注册成功后会在本 APK 的存储里存放数字证书,如果 APK 有变动(Android 系统认为应用变更了),则证书失效(会报错cert failticket 0 digital-sig check fail),可以清理 APK 的数据再以相同的 appid、model_id、SN调用接口重新申请即可。
  • 注册过程会有网络请求,时长根据网络情况会有所不同。高版本 android 不允许在主线程里进行网络请求,可以加处理或在线程里来调用 sdk。
# 参数说明
参数 类型 说明
appid String 小程序的 appid
model_id String 设备接入时从「小程序管理后台」申请获得的 model_id
sn String 设备序列号。厂商自己生成,长度不能超过 128 字节。字符只接受数字,大小写字母,下划线(*)和连字符(-)。
此处使用的 sn 必须与 WMPF 激活设备使用的 deviceId 一致
sn_ticket String 通过获取设备票据接口获得
# 返回值

其他异常说明请参考设备验证常见问题

名称 描述
OK 0 成功
ERR_ARGS -1 参数错误
ERR_IO -2 通用 IO 错误
ERR_KEY_IO -3 KEY 不匹配
ERR_RESPONSE -4 网络请求无回复
ERR_PEM -5 权限错误
ERR_INVALID_KEY -6 KEY 不可用
ERR_SERVICE -7 rpmbd 服务没运行
ERR_EMMC_UFS_CONFUSED -8 EMMC/UFS 不匹配。里面已经存在 SN
ERR_EMMC_UFS_IO -9 EMMC/UFS IO 错误
ERR_REG_NOPEM -10 密钥不存在

# 2.3 获取拨打方票据 getCallerTicket

进行设备认证,并从微信后台获取票据 (caller_ticket)。设备发起通话时需要将这一票据传给 VOIP 通话插件的 initByCaller 接口。

String getCallerTicket(String appid, String model_id) throws Exception
# 参数说明
参数 类型 说明
appid String 小程序的 appid
model_id String 设备接入时从「小程序管理后台」申请获得的 model_id
# 注意事项
  • getCallerTicket 耗时与网络有关,正常会在 1 秒左右。高版本 android 不允许在主线程里做,可以加处理或在线程里来调用 sdk。
  • ticket 有一个小时的有效期,一个小时内可被多次通话复用。建议开发者在用户发起通话前,提前调用 getCallerTicket 并缓存,避免在发起通话时再进行获取,以缩短发起通话时的用户等待时长。

# 2.4 获取设备 SN GetDeviceSn

获取 registerVoipDevice 接口写入的 SN。

String GetDeviceSn()