# 设备认证 SDK(安卓)

注意:License 计费不再支持使用设备认证 SDK 认证的设备,请尽快切换到使用 WMPF 认证设备,无需维护 deviceToken,接入更便捷。

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

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

# 1. 下载 SDK

请在 此处 下载 SDK 的 aar 文件。

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

  • v1.5.0 及以上版本需集成 voipsdk-x.x-release.aarsafeguard-release.aar 两个 aar 文件
  • v1.3.1 及以下版本只需集成 voipsdk-x.x-release.aar

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

# 2. 接口文档(v1.5.0及以上版本)

# 2.1 注册设备 registerDevice

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

int registerDevice(String appid, String model_id, String sn, String sn_ticket) throws Exception

# 注意事项(调用前必读

  • 注册设备成功后,会将 SN 固化至 EMMC/RPMB 分区中,标定此设备的唯一身份。SN 和 model_id 一经写入后续即不可更改
  • 此处使用的 SN,必须经过 WMPF 的 addDevice 接口作为 deviceId 注册,并与 WMPF 设备激活 使用的 deviceId 一致。 否则后续无法正常发起通话。
  • 注册成功后会在本 APK 的存储里存放数字证书,如果 APK 有变动(Android 系统认为应用变更了),则证书失效(会报错cert 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.2 获取设备凭证 getDeviceToken

进行设备认证,并从微信后台获取设备凭证。设备发起通话时需要将这一凭证传给 VOIP 通话插件的 initByCaller 接口的 voipToken 参数。

String getDeviceToken(String appid, String model_id) throws Exception

如果设备是使用 v1.5 及以上版本 SDK 进行注册设备的,可以使用无参数的版本。

String getDeviceToken() throws Exception

# 参数说明

参数 类型 说明
appid String 小程序的 appid
model_id String 设备接入时从「小程序管理后台」申请获得的 model_id

# 注意事项

  • 接口耗时与网络有关,正常会在 1 秒左右。高版本 android 不允许在主线程里做,可以加处理或在线程里来调用 sdk。
  • ticket 有一个小时的有效期,一个小时内可被多次通话复用。建议开发者在用户发起通话前,提前调用 getCallerTicket 并缓存,避免在发起通话时再进行获取,以缩短发起通话时的用户等待时长。

# 2.3 获取设备 SN getDeviceSn(仅调试用)

获取 registerDevice 接口写入的 SN。

String getDeviceSn()

# 2.4 获取设备 modelId getDeviceModelid(仅调试用)

获取使用 registerDevice 接口写入的 modelId。仅在设备是使用 v1.5 及以上版本 SDK 进行注册设备时有效。

String getDeviceModelid()

# 3. 接口文档(v1.3.1 及以下版本)

# 3.1 初始化 init

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

boolean init()

# 3.2 注册设备 registerVoipDevice

参考 2.1 registerDevice

  • 1.3 以下版本 SDK,此接口严禁并发执行,务必在逻辑中保证一次 registerVoipDevice 返回后才能再次调用。

# 3.3 获取拨打方票据 getCallerTicket

参考 2.2 getDeviceToken

# 3.4 获取设备 SN GetDeviceSn(仅调试用)

同 2.3 getDeviceSn