# WMPFBoot.init

> 需 WMPF >= 2.1.0 支持，使用前建议阅读[注意事项](/doc/oplatform/Miniprogram_Frame/api/about)

初始化 wmpf-cli。**必须在其他 wmpf-cli 接口（包括 `activateDevice`）调用之前调用该函数。**

## 调用参数

| 参数        | 必填 | 类型       | 说明             |
|-------------|------|------------|------------------|
| application | 是   | Context    | Application 对象 |
| wmpfDevice  | 否   | WMPFDevice | 设备激活信息     |

**注意：对于同一台设备，WMPFBoot.init 传入的 hostAppId、productId、keyVersion、deviceId 在生产环境应保持不变**

WMPF Service Apk 会保存设备激活信息，已实现自动激活和续期逻辑，测试过程中如果 hostAppId、productId、keyVersion、deviceId 发生变化，建议同时清除 WMPF Service Apk的应用数据。**

### WMPFDevice

**注意：WMPFDevice 不能被继承，会导致数据反序列化失败。新版本已改为 final class。**

在完成[接入流程](/doc/oplatform/Miniprogram_Frame/process)的所有步骤后，方可获取到 `productId` 、`keyVersion` 、`deviceId` 、`signature` 。

| 属性       | 必填 | 类型           | 说明                                                                                          | 最低版本   |
|------------|------|----------------|-----------------------------------------------------------------------------------------------|------------|
| hostAppId  | 是   | String         | [微信开放平台](https://open.weixin.qq.com)注册移动应用后获取的appId。该appId与小程序appId无关 |            |
| productId  | 是   | int            | WeCooper 平台审核通过后分配的 productId                                                       |            |
| keyVersion | 是   | int            | WeCooper 平台上传公钥后分配的 keyVersion                                                      |            |
| deviceId   | 是   | String         | 接入方分配的设备Id，该 id 应该已经通过 addDevice 接口在微信注册                               |            |
| signature  | 是   | String         | 由接入方通过 productId，deviceId，privateKey 经过运算后得到的签名（不需要换行符）             |            |
| features   | 否   | List\ | 声明使用的特性。目前支持：voip-device                                                         | WMPF 1.2.0 |

### features

- voip-device: 使用[小程序音视频通话（for 硬件）](/miniprogram/dev/framework/device/voip/call-wmpf.md)时，启用免维护 pushToken（暂未上线）。

## 返回参数

无

## 示例代码

**提供激活信息**

```kotlin
// 在 Application.onCreate 中实现
WMPFBoot.init(applicationContext, WMPFDevice(
    hostAppId,
    productId,
    keyVersion,
    deviceId,
    signature
))
```

**车机版免激活使用 wmpf-cli**

在 PAL 白名单内的车机系统应用，可以免激活使用 wmpf-cli 接口，`WMPFBoot.init` 调用方式如下：


```kotlin
// 在 Application.onCreate 中实现
WMPFBoot.init(applicationContext)
```
