# WMPFDeviceApi.activateDevice
需 WMPF >= 2.1.0 支持,使用前建议阅读注意事项
除特殊说明外,所有其他接口都需在该接口调用成功后才能使用,失败时请重试。
用于激活设备。设备激活状态可能存在过期的情况,建议使用 registerDeviceActivationOutdatedEventListener 监听并进行重新激活。
注1:对于同一台设备,WMPFBoot.init 传入的 hostAppId、productId、keyVersion、deviceId 在生产环境应保持不变。如果在开发调试过程中,这几个参数和上次激活时发生变化,会报错 DEVICE_CHANGED,需要手动清除 WMPF Service Apk 的应用数据。
注2: WMPF-cli 2.2 开始支持自动激活,通常情况下开发者不需要再显式调用 activateDevice。部分场景下除外:
- 如果希望提前校验设备激活状态,仍然可以直接调用 activateDevice。
- 在 registerDeviceActivationOutdatedEventListener 监听到设备激活状态失效时,可以在必要时(例如网络切换时)重新激活。
# 调用参数
无
# 返回参数
无
# 示例代码
val deviceApi = WMPF.getInstance().getDeviceApi()
deviceApi.activateDevice()
# 生命周期
WMPF 进程在重启后,应当重新调用该函数,以确保持有 wmpf-cli 接口调用权限。
对于车机版 WMPF:
- WMPF 在尝试自主激活时,会发送广播
com.tencent.wmpf.ACTION_ACTIVATE_DEVICE
; - WMPF 在自主激活后使用以下方法通知客户端 WMPF 激活完成,此时免激活使用的 wmpf-cli 可以自主调用
activateDevice
接口激活。- 通过 ContentProvider insert
content://com.tencent.wmpf.cli.provider/deviceActivated
通知 WMPF 已经完成设备激活(参见 WMPFClientProvider.setDeviceActivatedDelegate)。 - 发送广播
com.tencent.wmpf.ACTION_DEVICE_ACTIVATED
(不设置包名,对于 Android 8.0 及以上版本的系统,推荐使用第一种方法)。
- 通过 ContentProvider insert
# 常见错误
package is not trusted
- 对于接入了腾讯车联的 PAL 的车机系统,接入方应当使用免激活方式接入 wmpf-cli,此时需要向腾讯侧添加接入 wmpf-cli 的应用包名后方可免激活使用。
- 对于其他场景,请不要使用免激活方式接入 wmpf-cli,请确保使用了
WMPFBoot.init(applicationContext, WMPFDevice)
接口,并确保传入的WMPFDevice
接口参数正确。
signature err
是指后台发现签名中的参数与本接口传入的参数不匹配。在检验签名无误的情况下,建议按照下列指引检查:- 确认 WMPF 升级到 v1.1.5 及以上版本;
- 确认生成签名时的 productId、deviceId 和所使用密钥的版本(keyVersion) 与
WMPFBoot.init
传入的参数一致。 - 在开发者后台生成签名时,生成签名环境的 openssl 版本推荐使用 1.1.1,已确定 1.0.x 和 3.0.x 版本会有问题,其它版本开发者可自行尝试。
- 签名校验成功只能说明签名中包含的参数和校验时提供的参数一致,并不代表
activateDevice
不会报错。