# @gov-api-package/widget-manager

> 桌面widget添加和更新

Latest version **0.0.12** (published 2022-11-18) · ISC license · 0 weekly downloads

## Install

```sh
npm install @gov-api-package/widget-manager
pnpm add @gov-api-package/widget-manager
yarn add @gov-api-package/widget-manager
bun add @gov-api-package/widget-manager
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.0.12 |
| Published | 2022-11-18 |
| First published | 2022-11-09 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 21.4 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Maintainers | mayachen111, songyulin, luof, hellnaren |

## Links

- npm: https://www.npmjs.com/package/@gov-api-package/widget-manager
- npm.io page: https://npm.io/package/@gov-api-package/widget-manager

## Recent versions

- 0.0.12 (latest) — 2022-11-18
- 0.0.11 — 2022-11-16
- 0.0.10 — 2022-11-15
- 0.0.9 — 2022-11-15
- 0.0.8 — 2022-11-15
- 0.0.7 — 2022-11-15
- 0.0.6 — 2022-11-14
- 0.0.5 — 2022-11-14
- 0.0.4 — 2022-11-14
- 0.0.3 — 2022-11-11
- 0.0.2 — 2022-11-11
- 0.0.1 — 2022-11-09

## README

# widget桌面小组件 API

### 添加widget示意图
<img src="https://b.bdstatic.com/searchbox/icms/searchbox/img/dbfdd9ad26b324d4f040996c2.png" width="700" height="1000" />

## 一、在开发之前

### 1.1 配置域名

接入前请将此域名 https://zw.baidusmartapps.com 添加到request的合法域名中

| 域名 | 添加方式 |
| ---- | ---- |
| https://zw.baidusmartapps.com | 开发者后台->小程序管理->设置->开发设置->服务器域名->request的合法域名 |

### 1.2 小程序需开通以下api的鉴权

| 需鉴权的API | 说明 |
| --- | --- |
| swan.addCustomWidget | 添加桌面widget小组件 |
| swan.updateCustomWidgetConfig | 刷新widgetAPI |
| swan.openBdboxWebview | 打开百度页面API，用于打开刷新widget的h5页面 |

## 二、接入

### 2.1 安装依赖

```text
npm i @gov-api-package/widget-manager --save
```

### 2.2 API 使用

widget桌面小组件服务目前提供了初始化、判断当前宿主是否可添加、添加、更新API，具体如下表所示：

| API | 说明  |
| ---- | ---- |
| canUse | 判断当前宿主是否支持添加、更新widget |
| init | 初始化widget，初始化后才可以调用添加、更新的API |
| add | 添加widget桌面小组件 |
| update | 更新widget桌面小组件 |

```javascript
// 引入
import {widgetManager} from '@gov-api-package/widget-manager';
```

### 2.2.1 查询当前宿主是否可创建widget canUse
#### API请求参数说明：
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
| --- | --- | --- | --- | --- |
| apiName | String | 否 | addCustomWidget | 判断创建的时候：addCustomWidget<br>判断更新的时候：updateCustomWidgetConfig |

#### API返回值说明：
| 值 | 类型 | 说明 |
| --- | --- | --- |
| true | Boolean | 可用 |
| false | Boolean | 不可用 |

#### API示例：
```javascript
/**
 * 初始化widget相关的API
 */
async initWidget() {
    const isCanAdd = await widgetManager.canUse();
    isCanAdd && widgetManager.init({
        widgetType: 'express',
        addConfig: {
            failType: '1',
            successType: '1'
        }
    });
}
```

### 2.2.2 初始化widget：init
#### API请求参数说明：
| 参数 | | 类型 | 是否必传 | 默认值 | 说明 |
| --- | --- | --- | --- | --- | --- |
| widgetInfo | | Object | 是 | | widget信息 |
| | widgetType| String | 是 | | widget类型|
| | appKey | String | 是 | | 小程序的appKey，可通过以下方式获得：<br>开发者后台->小程序管理->基础设置->开发设置->开发者ID模块->App Key |
| | addConfig | Object | 否 | 不传则add方法添加成功、失败都执行以下默认操作 | add方法的相关配置 |
| | updateConfig | Object | 否 | 不传则update执行成功后或失败后没有任何提示 | update的相关配置 |

#### widgetType可选值说明：
| 值 | 说明 |
| ---| --- |
| hesuan | 核酸，也是桌面widget默认展示类型 |
| express | 快递 |
| riskLevel | 疫情风险地区 |
| weather | 天气 |
| starSign | 星座 |

#### addConfig参数说明：
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
| --- | --- | --- | --- | --- |
| failType | String | 否 | 1 | 1 添加失败进行toast提示，系统不支持跳转到兜底h5。<br/>2 添加失败进行toast提示，系统不支持添加小程序桌面快捷方式。 |
| failToastText | String | 否 | 添加失败 | addConfig.failType有值时的toast提示文案，若addConfig.failType值为2，则系统不支持widget的时候创建小程序桌面快捷方式失败也提示此文案。 |
| successType | String | 否 | 1 | 1 添加成功toast提示 |
| successToastText | String | 否 | 添加成功 | addConfig.successType有值时的toast提示文案。|
| webviewPagePath | String | 否 | | addConfig.failType为1时承载h5兜底页、ios机型承载h5引导页的webview页面，若不传此参数toast提示添加失败<br>需以「/」开头|
| webviewParamName | String | 否 | url | webview页面内，接收h5链接的参数 |

#### updateConfig参数说明：
| 参数 | 类型 | 是否必传 | 默认值 | 说明 |
| --- | --- | --- | --- | --- |
| failToastText | String | 否 | | 更新失败的toast提示，不传则失败无提示 |
| successToastText | String | 否 | | 更新成功的toast提示，不传则成功无提示 |

#### API使用示例：

```javascript
/**
 * 初始化widget相关的API
 */
initWidget() {
    widgetManager.init({
        widgetType: 'express',
        addConfig: {
            failType: '1',
            successType: '1'
        }
    });
}
```

### 2.2.3 添加widget add
#### API请求参数：

| 参数 | | 类型 | 是否必传 | 默认值 | 说明 |
| --- | --- | --- | --- | --- | --- |
| addInfo | | Object | 否 | | 添加widget相关的参数合集 |
| | success | Function | 否 | | 接口调用成功的回调函数 |
| | fail | Function | 否 | | 接口调用失败的回调函数 |

#### success回调参数说明：

| 参数 | 类型 | 说明 |
| --- | --- | --- |
| code | String | 添加成功返回0，若系统不支持widget，且widgetInfo.addConfig.failType为2的时候，添加桌面快捷方式也会返回0，但没有widgetId |
| widgetId | String | 添加成功后，桌面上生成的 widget 对应的实例 id |

#### fail回调参数说明：

| 参数| 类型 | 值 | 说明 |
| --- | --- | --- | --- |
|errCode | String | | add添加失败的code |
| | | 400：调用add接口，参数错误；<br/>900：调用add接口，接口异常<br/>1000：调用add接口无网络；<br/>1001：添加失败；<br/>1002：系统不支持；<br/>1003：桌面已存在（13.19以下）； |add添加失败的公共code |
| | | 1005：系统不支持，且打开h5引导页失败 | init方法中，widgetInfo.addConfig.failType值为1的时侯，打开h5引导页失败的code： |
| | |  1004：系统不支持，创建桌面快捷方式失败； |init方法中，widgetInfo.addConfig.failType值为2的时候addToDesktop失败的code： |
| errMsg | String | | 添加失败的具体原因 |

#### API使用示例:

```javascript
/**
 * 添加widget桌面小组件
 */
addWidgetHdl() {
    widgetManager.add({
        success: () => {
            console.log('添加成功')
        },
        fail: err => {
            console.log('添加失败')
        }
    });
}
```

### 2.2.4 更新widget update
#### API请求参数：

| 参数 | | 类型 | 是否必传 | 默认值 | 说明 |
| --- | --- | --- | --- | --- | --- |
| updateInfo | | Object | 是 | | |
| | updateId | String | 若调用保存接口后刷新桌面widget时必传 | | 开发者将一些数据提交给服务端之后，接口返回的updateId |
| | widgetId | String | 是 | | 桌面上widget的实例id |
| | success | Function | 否 | | 成功的回调 |
| | fail | Function | 否 | | 失败的回调 |

#### fail回调参数说明：

| 参数 | 类型 | 值 | 说明 |
| --- | --- | --- | --- |
| errCode | String | 1001： 更新失败 | 更新失败的code |
| errMsg | String | | 更新失败的说明 |

#### API使用示例：

```javascript
/**
 * 刷新widget桌面小组件
 */
updateWidgetHdl() {
    widgetManager.update({
        updateId: '123',
        widgetId: '123',
        success: () => {
            console.log('更新成功');
        },
        fail: err => {
            console.log('更新失败');
        }
    });
},
```

---
_Source: https://npm.io/package/@gov-api-package/widget-manager · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
