# 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 及以上版本的系统,推荐使用第一种方法)。

# 常见错误

  • 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 不会报错。