# 设备认证 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.aar
和safeguard-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