开放平台
ActivateDevice (客户端)
# ActivateDevice
所有其他接口都需在该接口调用成功后才能使用,失败时请重试。
用于激活设备。每次 WMPF 启动都应调用,有效期与 WMPF Service 进程存活周期一致。
# 调用参数
在完成接入流程的所有步骤后,方可获取到 productId
、keyVersion
、deviceId
、signature
。
# features
- voip-device: 使用小程序音视频通话(for 硬件)时,启用免维护 pushToken。
# 返回参数
# 示例代码
val request = WMPFActivateDeviceRequest().apply {
this.baseRequest = WMPFBaseRequestHelper.checked()
this.productId = productId
this.keyVersion = keyVerion
this.deviceId = deviceId
this.signature = signature.replace(Regex("[\t\r\n]"), "")
this.hostAppId = hostAppId
}
val result =
WMPFIPCInvoker.invokeAsync<IPCInvokerTask_ActivateDevice, WMPFActivateDeviceRequest, WMPFActivateDeviceResponse>(
request,
IPCInvokerTask_ActivateDevice::class.java,
object : IPCInvokeCallbackEx<WMPFActivateDeviceResponse> {
override fun onBridgeNotFound() {
it.onError(Exception("bridge not found"))
}
override fun onCallback(response: WMPFActivateDeviceResponse) {
if (isSuccess(response)) {
if (response != null && !response.invokeToken.isNullOrEmpty()) {
initInvokeToken(response.invokeToken)
}
it.onSuccess(response)
} else {
it.onError(TaskErrorException(createTaskError(response)))
}
}
override fun onCaughtInvokeException(exception: java.lang.Exception?) {
if (exception != null) {
it.onError(exception)
} else {
it.onError(java.lang.Exception("null"))
}
}
})
if (!result) {
it.onError(Exception("invoke activateDevice fail"))
}
# 注意
- 强烈推荐注册 onBridgeNotFound 、onCallback 失败回调,一旦激活失败,请重试。
- 可以先通过 ActiveStatus 判断是否设备是否已激活。
- signature err 是指后台发现签名中的参数与本接口传入的参数不匹配。在检验签名无误的情况下,建议按照下列指引检查:
- 确认 WMPF 升级到 v1.1.5 及以上版本;
- 确认生成签名时的 productId、deviceId 和所使用密钥的版本(keyVersion) 与 ActivateDevice 传入的参数一致。
- 在开发者后台生成签名时,生成签名环境的 openssl 版本推荐使用 1.1.1,已确定 1.0.x 和 3.0.x 版本会有问题,其它版本开发者可自行尝试。
- 签名校验成功只能说明签名中包含的参数和校验时提供的参数一致,并不代表 ActivateDevice 不会报错。