# PrefetchDeviceToken

建议使用 WMPFMiniProgramDeviceApi.prefetchDeviceToken 接口.

WMPF 2.1.0 开始,本接口不需要 ActivateDevice 即可使用。

预拉取设备凭证。

在某些需要使用设备凭证的场景,可以提前拉取设备凭证。预拉取后,在凭证有效期内(目前为 1 小时),框架使用时可以直接从缓存读取,不需要重新请求。

例如:发起小程序音视频通话(for 硬件)前,预拉取设备凭证可以降低发起通话的耗时。

WMPF 1.2.0 版本开始支持。

# 注意事项

  • 注册是否成功以返回值里的 errMsg 为准(errMsg 非空为失败),而不以接口调用是否成功。

# 调用参数

# 返回参数

属性 类型 说明
errMsg string 错误详情

# 示例代码

fun prefetchDeviceToken(): Single<WMPFPrefetchDeviceTokenResponse> {
    return Single.create {
        val request = WMPFPrefetchDeviceTokenRequest().apply {
            this.baseRequest = WMPFBaseRequestHelper.checked()
        }

        val result = WMPFIPCInvoker.invokeAsync<IPCInvokerTask_PrefetchDeviceToken, WMPFPrefetchDeviceTokenRequest, WMPFPrefetchDeviceTokenResponse>(
            request,
            IPCInvokerTask_PrefetchDeviceToken::class.java,
            object : IPCInvokeCallbackEx<WMPFPrefetchDeviceTokenResponse> {
                override fun onCallback(response: WMPFPrefetchDeviceTokenResponse) {
                    if (isSuccess(response)) {
                        it.onSuccess(response)
                    } else {
                        it.onError(TaskErrorException(createTaskError(response)))
                    }
                }

                override fun onBridgeNotFound() {
                    it.onError(Exception("bridge not found"))
                }

                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 prefetchDeviceToken fail"))
        }
    }
}