@kbapp/js-bridge 0.4.8-alpha.0 → 1.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LOGIN.MD +79 -0
- package/README.MD +1045 -182
- package/dist/core/index.d.ts +68 -16
- package/dist/index.d.ts +8 -5
- package/dist/index.es.js +516 -0
- package/dist/index.umd.js +1 -0
- package/dist/lib/app-version-support.d.ts +41 -0
- package/dist/lib/bridge-code.d.ts +14 -0
- package/dist/lib/check-for-new-version.d.ts +7 -5
- package/dist/lib/close-webview.d.ts +6 -2
- package/dist/lib/define-permission-usage.d.ts +8 -2
- package/dist/lib/generate-kb-sign.d.ts +13 -2
- package/dist/lib/{get-device-info.d.ts → get-app-base-info.d.ts} +14 -7
- package/dist/lib/open-post-editor.d.ts +47 -4
- package/dist/lib/report-da-event.d.ts +33 -0
- package/dist/lib/run-action.d.ts +9 -5
- package/dist/lib/save-image-to-local.d.ts +8 -4
- package/dist/lib/save-video-to-local.d.ts +7 -3
- package/dist/lib/scan-qr-code.d.ts +23 -0
- package/dist/lib/screen-orientation.d.ts +13 -0
- package/dist/lib/set-webview-title.d.ts +7 -3
- package/dist/lib/share-image.d.ts +21 -0
- package/dist/lib/share-model.d.ts +170 -45
- package/dist/lib/subscribe-notify.d.ts +25 -0
- package/dist/lib/trigger-login.d.ts +18 -10
- package/dist/utils/filter-undefined-properties.d.ts +6 -0
- package/dist/utils/promise-cache.d.ts +5 -0
- package/dist/utils/wrap-async.d.ts +17 -0
- package/examples/index.html +236 -0
- package/package.json +17 -4
- package/vite.config.ts +32 -0
- package/dist/core/index.js +0 -84
- package/dist/core/lib/ds-bridge.d.ts +0 -7
- package/dist/core/lib/ds-bridge.js +0 -126
- package/dist/core/lib/flutter-ds-bridge.js +0 -172
- package/dist/core/lib/js-bridge.d.ts +0 -22
- package/dist/core/lib/js-bridge.js +0 -188
- package/dist/index.js +0 -33
- package/dist/lib/can-i-use.d.ts +0 -13
- package/dist/lib/can-i-use.js +0 -102
- package/dist/lib/check-for-new-version.js +0 -26
- package/dist/lib/close-webview.js +0 -24
- package/dist/lib/define-permission-usage.js +0 -40
- package/dist/lib/generate-kb-sign.js +0 -75
- package/dist/lib/get-device-info.js +0 -36
- package/dist/lib/js-bridge-code.d.ts +0 -10
- package/dist/lib/js-bridge-code.js +0 -14
- package/dist/lib/open-post-editor.js +0 -116
- package/dist/lib/report-getui.d.ts +0 -14
- package/dist/lib/report-getui.js +0 -17
- package/dist/lib/run-action.js +0 -29
- package/dist/lib/save-image-to-local.js +0 -28
- package/dist/lib/save-video-to-local.js +0 -28
- package/dist/lib/set-webview-title.js +0 -27
- package/dist/lib/share-model.js +0 -80
- package/dist/lib/share-poster.d.ts +0 -16
- package/dist/lib/share-poster.js +0 -26
- package/dist/lib/trigger-login.js +0 -195
- package/dist/util/promise-cache.d.ts +0 -5
- package/dist/util/promise-cache.js +0 -24
package/README.MD
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 开吧客户端桥接
|
|
2
2
|
|
|
3
|
-
>
|
|
3
|
+
> ⚠️ 重要提示:本 SDK 基于 TypeScript 开发,所有 API 参数均带有明确的必填 / 选填类型标注。使用时请务必开启 TS 类型检查或在 IDE 中查看参数提示,必填项缺失会直接提示错误,选填项可按需传入,请勿忽略类型提示以避免使用异常。
|
|
4
4
|
|
|
5
5
|
## 下载
|
|
6
6
|
|
|
@@ -10,111 +10,248 @@ npm:
|
|
|
10
10
|
npm i @kbapp/js-bridge
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
### 或通过 script 标签引入
|
|
14
|
+
|
|
15
|
+
使用 unpkg CDN:
|
|
16
|
+
|
|
17
|
+
```html
|
|
18
|
+
<script src="https://unpkg.com/@kbapp/js-bridge@latest/dist/index.umd.js"></script>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
使用 jsdelivr CDN:
|
|
22
|
+
|
|
23
|
+
```html
|
|
24
|
+
<script src="https://cdn.jsdelivr.net/npm/@kbapp/js-bridge@latest/dist/index.umd.js"></script>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
> 通过 script 标签引入后,SDK 将作为全局变量 `kbBridge` 挂载在 window 对象上
|
|
28
|
+
|
|
29
|
+
## 示例
|
|
14
30
|
|
|
15
31
|
```js
|
|
16
|
-
|
|
32
|
+
import { saveImageToLocal, BridgeCode } from '@kbapp/js-bridge'
|
|
33
|
+
|
|
34
|
+
function saveImageHandle() {
|
|
35
|
+
saveImageToLocal({
|
|
36
|
+
imageUrl: 'https://static.kaiba315.com.cn/kaiba-logo.png',
|
|
37
|
+
success() {
|
|
38
|
+
console.log('执行成功')
|
|
39
|
+
},
|
|
40
|
+
})
|
|
41
|
+
}
|
|
17
42
|
```
|
|
18
43
|
|
|
19
|
-
|
|
44
|
+
### 通过 script 标签引入的使用示例
|
|
20
45
|
|
|
21
46
|
```js
|
|
22
|
-
|
|
47
|
+
// 通过全局变量kbBridge访问SDK功能
|
|
48
|
+
async function saveImageHandle() {
|
|
49
|
+
kbBridge.saveImageToLocal({
|
|
50
|
+
imageUrl: 'https://static.kaiba315.com.cn/kaiba-logo.png',
|
|
51
|
+
success() {
|
|
52
|
+
console.log('保存成功')
|
|
53
|
+
},
|
|
54
|
+
fail(error) {
|
|
55
|
+
console.log('保存失败', error)
|
|
56
|
+
},
|
|
57
|
+
})
|
|
58
|
+
}
|
|
23
59
|
```
|
|
24
60
|
|
|
25
|
-
##
|
|
61
|
+
## 测试页面
|
|
62
|
+
|
|
63
|
+
> 可以通过以下地址访问 SDK 的测试页面,查看所有 API 的使用示例
|
|
64
|
+
|
|
65
|
+
测试页面地址:
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
https://unpkg.com/@kbapp/js-bridge@latest/examples/index.html
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## API
|
|
72
|
+
|
|
73
|
+
### 总览
|
|
74
|
+
|
|
75
|
+
| 桥接 type | 方法 | 说明 |
|
|
76
|
+
| --------- | -------------------------------- | ------------------------- |
|
|
77
|
+
| - | `defineBridgeCallback` | 定义桥接调用的回调函数 |
|
|
78
|
+
| - | `runBridgeApi` | 执行桥接(无返回值) |
|
|
79
|
+
| - | `runBridgeApiResponse` | 执行桥接(等待响应) |
|
|
80
|
+
| - | `isAppVersionSupport` | 判断当前版本号是否支持 |
|
|
81
|
+
| -1 | `closeWebView` | 关闭当前 webview |
|
|
82
|
+
| - | `onAppSharePanelShow` | 监听分享面板打开事件 |
|
|
83
|
+
| 12 | `defineAppShareModel` | 定义页面分享内容 |
|
|
84
|
+
| 58 | `openAppSharePanel` | 主动唤起分享面板 |
|
|
85
|
+
| 68 | `defineAppSharePanelState` | 定义分享面板控件布局 |
|
|
86
|
+
| 13 | `openPostEditor` | 唤起发帖器 |
|
|
87
|
+
| 26 | `scanQRCode` | 扫描二维码 |
|
|
88
|
+
| 35 | `getAppBaseInfo` | 获取设备信息 |
|
|
89
|
+
| 51 | `generateKBSign` | 生成 kbsign |
|
|
90
|
+
| 56 | `checkForNewVersion` | 检测是否有新版本 |
|
|
91
|
+
| 58 | `shareImage` | 分享海报 |
|
|
92
|
+
| 64 | `setWebViewTitle` | 设置网页标题 |
|
|
93
|
+
| 62 | `saveImageToLocal` | 保存图片到本地 |
|
|
94
|
+
| 63 | `saveVideoToLocal` | 保存视频到本地 |
|
|
95
|
+
| 69 | `reportDAEvent` | 上报数据埋点 |
|
|
96
|
+
| - | `onAppLoginSuccess` | 监听登录成功回调 |
|
|
97
|
+
| 31 | `getAppLoginInfo` | 获取 app 登录信息 |
|
|
98
|
+
| 31 | `triggerAppLogin` | 触发 app 登录 |
|
|
99
|
+
| 71 | `setScreenOrientation` | 设置屏幕方向 |
|
|
100
|
+
| 72 | `getAppSubscribeNotifyStatus` | 获取APP订阅通知状态 |
|
|
101
|
+
| 73 | `openAppSubscribeNotifySettings` | 前往/打开 app订阅管理页面 |
|
|
102
|
+
| 1001 | `runAction` | 执行 action |
|
|
103
|
+
|
|
104
|
+
| 类/枚举 | 说明 |
|
|
105
|
+
| -------------------- | ---------------- |
|
|
106
|
+
| `BridgeCode` | kbapp 桥接状态码 |
|
|
107
|
+
| `AppBridgedUserInfo` | 登录信息模型 |
|
|
108
|
+
| `AppShareModel` | 应用分享模型 |
|
|
109
|
+
| `AppBaseInfo` | 设备信息模型 |
|
|
110
|
+
|
|
111
|
+
### checkForNewVersion
|
|
112
|
+
|
|
113
|
+
> 检测是否有新版本可用, iOS 无论是否有最新版本都直接跳转到应用商店, 安卓如果有新版,则弹窗提示,没有的话 toast 提示无新版本
|
|
114
|
+
|
|
115
|
+
#### 请求参数
|
|
116
|
+
|
|
117
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
118
|
+
| ---------- | ----------------------------- | ---- | -------- |
|
|
119
|
+
| `success` | `() => void` | 否 | 成功回调 |
|
|
120
|
+
| `fail` | `(error: BridgeCode) => void` | 否 | 失败回调 |
|
|
121
|
+
| `complete` | `() => void` | 否 | 完成回调 |
|
|
122
|
+
|
|
123
|
+
#### 返回值
|
|
26
124
|
|
|
27
125
|
```js
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
return
|
|
43
|
-
|
|
44
|
-
default:
|
|
45
|
-
return
|
|
46
|
-
}
|
|
47
|
-
}
|
|
126
|
+
Promise<void>
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
#### 示例代码
|
|
130
|
+
|
|
131
|
+
```js
|
|
132
|
+
import { checkForNewVersion } from '@kbapp/js-bridge'
|
|
133
|
+
|
|
134
|
+
checkForNewVersion({
|
|
135
|
+
success() {
|
|
136
|
+
console.log('检查成功')
|
|
137
|
+
},
|
|
138
|
+
fail(error) {
|
|
139
|
+
console.log('检查失败', error)
|
|
48
140
|
},
|
|
49
141
|
})
|
|
50
142
|
```
|
|
51
143
|
|
|
52
|
-
|
|
144
|
+
> 支持 Promise 风格
|
|
53
145
|
|
|
54
|
-
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
### closeWebView
|
|
149
|
+
|
|
150
|
+
> 关闭当前 webview
|
|
151
|
+
|
|
152
|
+
#### 请求参数
|
|
153
|
+
|
|
154
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
155
|
+
| ---------- | ----------------------------- | ---- | -------- |
|
|
156
|
+
| `success` | `() => void` | 否 | 成功回调 |
|
|
157
|
+
| `fail` | `(error: BridgeCode) => void` | 否 | 失败回调 |
|
|
158
|
+
| `complete` | `() => void` | 否 | 完成回调 |
|
|
159
|
+
|
|
160
|
+
#### 返回值
|
|
161
|
+
|
|
162
|
+
```js
|
|
163
|
+
Promise<void>
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
#### 示例代码
|
|
55
167
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
| setWebViewTitle | 设置网页标题 |
|
|
67
|
-
| defineShareModel | 设置当前页面分享时显示卡片样式 |
|
|
68
|
-
| defineShareModelState | 定义分享面板控件布局 |
|
|
69
|
-
| invokeShareModal | 主动唤起更多分享模态框 |
|
|
70
|
-
| sharePoster | 分享海报 |
|
|
71
|
-
| getAppLoginInfo | 获取 app 登录信息 |
|
|
72
|
-
| triggerAppLogin | 触发 app 登录 |
|
|
73
|
-
| watchAppLoginSuccess | 监听登录成功回调 |
|
|
74
|
-
| reportGetui | 个推事件上报 |
|
|
75
|
-
| generateKBSign | 生成 kbsign |
|
|
76
|
-
|
|
77
|
-
| 枚举 | 说明 |
|
|
78
|
-
| ------------------ | ---------------- |
|
|
79
|
-
| JSBridgeCode | kbapp 桥接状态码 |
|
|
80
|
-
| AppBridgedUserInfo | 登录信息 model |
|
|
81
|
-
|
|
82
|
-
### 登录设计
|
|
83
|
-
|
|
84
|
-
以小程序运行逻辑参考
|
|
85
|
-
|
|
86
|
-
#### 如果是点击某个按钮再执行登录的情况
|
|
87
|
-
|
|
88
|
-
提供装饰器, 注入回调函数
|
|
89
|
-
|
|
90
|
-
```js
|
|
91
|
-
const onTapSomeButton = decorateLogin(() => {
|
|
92
|
-
// Todo someting
|
|
168
|
+
```js
|
|
169
|
+
import { closeWebView } from '@kbapp/js-bridge'
|
|
170
|
+
|
|
171
|
+
closeWebView({
|
|
172
|
+
success() {
|
|
173
|
+
console.log('关闭成功')
|
|
174
|
+
},
|
|
175
|
+
fail(error) {
|
|
176
|
+
console.log('关闭失败', error)
|
|
177
|
+
},
|
|
93
178
|
})
|
|
94
179
|
```
|
|
95
180
|
|
|
96
|
-
|
|
181
|
+
> 支持 Promise 风格
|
|
97
182
|
|
|
98
|
-
|
|
183
|
+
---
|
|
99
184
|
|
|
100
|
-
|
|
101
|
-
担心一个动作触发累计多个回调事件, 导致逻辑混乱
|
|
185
|
+
### definePermissionUsage
|
|
102
186
|
|
|
103
|
-
|
|
187
|
+
> 定义隐私权限协议文案
|
|
104
188
|
|
|
105
|
-
|
|
189
|
+
#### 请求参数
|
|
106
190
|
|
|
107
|
-
|
|
191
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
192
|
+
| ------------------------ | ----------------------------- | ---- | -------------- |
|
|
193
|
+
| `microphone` | `object` | 否 | 麦克风权限说明 |
|
|
194
|
+
| `microphone.description` | `string` | 是 | 麦克风权限描述 |
|
|
195
|
+
| `camera` | `object` | 否 | 相机权限说明 |
|
|
196
|
+
| `camera.description` | `string` | 是 | 相机权限描述 |
|
|
197
|
+
| `location` | `object` | 否 | 位置权限说明 |
|
|
198
|
+
| `location.description` | `string` | 是 | 位置权限描述 |
|
|
199
|
+
| `success` | `() => void` | 否 | 成功回调 |
|
|
200
|
+
| `fail` | `(error: BridgeCode) => void` | 否 | 失败回调 |
|
|
201
|
+
| `complete` | `() => void` | 否 | 完成回调 |
|
|
108
202
|
|
|
109
|
-
|
|
203
|
+
#### 返回值
|
|
110
204
|
|
|
111
|
-
|
|
205
|
+
```js
|
|
206
|
+
Promise<void>
|
|
207
|
+
```
|
|
112
208
|
|
|
113
|
-
####
|
|
209
|
+
#### 示例代码
|
|
210
|
+
|
|
211
|
+
```js
|
|
212
|
+
import { definePermissionUsage } from '@kbapp/js-bridge'
|
|
213
|
+
|
|
214
|
+
definePermissionUsage({
|
|
215
|
+
microphone: { description: '用于发帖上传音频' },
|
|
216
|
+
location: { description: '获取你选择的位置信息,用于线下导航服务' },
|
|
217
|
+
camera: { description: '收集你选中的照片或视频信息,用于发表评论、分享视频' },
|
|
218
|
+
success() {
|
|
219
|
+
console.log('设置成功')
|
|
220
|
+
},
|
|
221
|
+
fail(error) {
|
|
222
|
+
console.log('设置失败', error)
|
|
223
|
+
},
|
|
224
|
+
})
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
> 支持 Promise 风格
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
### defineAppShareModel
|
|
232
|
+
|
|
233
|
+
> 定义 app 点击转发时候的分享卡片内容
|
|
234
|
+
|
|
235
|
+
#### 请求参数 方式 1
|
|
236
|
+
|
|
237
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
238
|
+
| ---------- | ----------------------------- | ---- | ------------ |
|
|
239
|
+
| `title` | `string` | 是 | 分享标题 |
|
|
240
|
+
| `content` | `string` | 否 | 分享内容 |
|
|
241
|
+
| `imageUrl` | `string` | 是 | 分享图片 URL |
|
|
242
|
+
| `url` | `string` | 是 | 分享链接 URL |
|
|
243
|
+
| `success` | `() => void` | 否 | 成功回调 |
|
|
244
|
+
| `fail` | `(error: BridgeCode) => void` | 否 | 失败回调 |
|
|
245
|
+
| `complete` | `() => void` | 否 | 完成回调 |
|
|
246
|
+
|
|
247
|
+
#### 请求参数 方式 2
|
|
114
248
|
|
|
115
|
-
| 参数
|
|
116
|
-
|
|
|
117
|
-
|
|
|
249
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
250
|
+
| ------------ | ----------------------------- | ---- | -------------------------------------------- |
|
|
251
|
+
| `onShareApp` | `() => AppShareModel` | 是 | 点击分享时触发的函数,返回分享模型(方式 2) |
|
|
252
|
+
| `success` | `() => void` | 否 | 成功回调 |
|
|
253
|
+
| `fail` | `(error: BridgeCode) => void` | 否 | 失败回调 |
|
|
254
|
+
| `complete` | `() => void` | 否 | 完成回调 |
|
|
118
255
|
|
|
119
256
|
#### 返回值
|
|
120
257
|
|
|
@@ -122,23 +259,62 @@ const onTapSomeButton = decorateLogin(() => {
|
|
|
122
259
|
Promise<void>
|
|
123
260
|
```
|
|
124
261
|
|
|
125
|
-
####
|
|
262
|
+
#### 示例代码
|
|
126
263
|
|
|
127
264
|
```js
|
|
128
|
-
|
|
265
|
+
import { defineAppShareModel } from '@kbapp/js-bridge'
|
|
266
|
+
|
|
267
|
+
// 方式1:直接提供分享模型
|
|
268
|
+
defineAppShareModel({
|
|
269
|
+
title: '分享标题',
|
|
270
|
+
content: '分享内容',
|
|
271
|
+
imageUrl: 'https://static.kaiba315.com.cn/kaiba-logo.png',
|
|
272
|
+
url: 'http://www.kaiba315.com.cn/',
|
|
273
|
+
success() {
|
|
274
|
+
console.log('设置成功')
|
|
275
|
+
},
|
|
276
|
+
fail(error) {
|
|
277
|
+
console.log('设置失败', error)
|
|
278
|
+
},
|
|
279
|
+
})
|
|
280
|
+
|
|
281
|
+
// 方式2:提供分享模型函数(点击分享时动态生成分享内容)
|
|
282
|
+
defineAppShareModel({
|
|
283
|
+
onShareApp() {
|
|
284
|
+
// 点击页面右上角或分享按钮时触发该回调,动态生成分享内容
|
|
285
|
+
return {
|
|
286
|
+
title: '动态生成的分享标题',
|
|
287
|
+
content: '动态生成的分享内容',
|
|
288
|
+
imageUrl: 'https://static.kaiba315.com.cn/kaiba-logo.png',
|
|
289
|
+
url: 'http://www.kaiba315.com.cn/?t=' + Date.now(),
|
|
290
|
+
}
|
|
291
|
+
},
|
|
292
|
+
success() {
|
|
293
|
+
console.log('设置成功')
|
|
294
|
+
},
|
|
295
|
+
fail(error) {
|
|
296
|
+
console.log('设置失败', error)
|
|
297
|
+
},
|
|
298
|
+
})
|
|
129
299
|
```
|
|
130
300
|
|
|
301
|
+
> 支持 Promise 风格
|
|
302
|
+
|
|
131
303
|
---
|
|
132
304
|
|
|
133
|
-
###
|
|
305
|
+
### defineAppSharePanelState
|
|
134
306
|
|
|
135
|
-
>
|
|
307
|
+
> 定义页面是否显示右上角分享菜单, 定义分享面板显示的相关状态
|
|
136
308
|
|
|
137
309
|
#### 请求参数
|
|
138
310
|
|
|
139
|
-
| 参数
|
|
140
|
-
|
|
|
141
|
-
|
|
|
311
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
312
|
+
| ------------ | ----------------------------- | ---- | --------------------------------------------------------------------------------------------- |
|
|
313
|
+
| `showMenu` | `boolean` | 是 | 是否显示右上角 ... 菜单 |
|
|
314
|
+
| `panelStyle` | `0 1 2` | 否 | 显示分享面板布局, 0:正常显示. 1:只显示复制链接,浏览器打开相关. 2:只显示分享微信、QQ等. 默认 0 |
|
|
315
|
+
| `success` | `() => void` | 否 | 成功回调 |
|
|
316
|
+
| `fail` | `(error: BridgeCode) => void` | 否 | 失败回调 |
|
|
317
|
+
| `complete` | `() => void` | 否 | 完成回调 |
|
|
142
318
|
|
|
143
319
|
#### 返回值
|
|
144
320
|
|
|
@@ -146,48 +322,164 @@ Promise<{ errCode: JSBridgeCode }>
|
|
|
146
322
|
Promise<void>
|
|
147
323
|
```
|
|
148
324
|
|
|
149
|
-
####
|
|
325
|
+
#### 示例代码
|
|
326
|
+
|
|
327
|
+
```js
|
|
328
|
+
import { defineAppSharePanelState } from '@kbapp/js-bridge'
|
|
329
|
+
|
|
330
|
+
defineAppSharePanelState({
|
|
331
|
+
showMenu: true,
|
|
332
|
+
panelStyle: 0,
|
|
333
|
+
success() {
|
|
334
|
+
console.log('设置成功')
|
|
335
|
+
},
|
|
336
|
+
fail(error) {
|
|
337
|
+
console.log('设置失败', error)
|
|
338
|
+
},
|
|
339
|
+
})
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
> 支持 Promise 风格
|
|
343
|
+
|
|
344
|
+
---
|
|
345
|
+
|
|
346
|
+
### generateKBSign
|
|
347
|
+
|
|
348
|
+
> 生成 kbsign
|
|
349
|
+
|
|
350
|
+
#### 请求参数
|
|
351
|
+
|
|
352
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
353
|
+
| ------------ | ----------------------------- | ---- | ---------------------- |
|
|
354
|
+
| `kbSignTime` | `number` | 是 | 签名时间戳 |
|
|
355
|
+
| `kbSignType` | `number` | 是 | 签名类型 |
|
|
356
|
+
| `...` | `any` | 否 | 其他需要签名的参数 |
|
|
357
|
+
| `success` | `(res: string) => void` | 否 | 成功回调,返回签名结果 |
|
|
358
|
+
| `fail` | `(error: BridgeCode) => void` | 否 | 失败回调 |
|
|
359
|
+
| `complete` | `() => void` | 否 | 完成回调 |
|
|
360
|
+
|
|
361
|
+
#### 返回值
|
|
362
|
+
|
|
363
|
+
```js
|
|
364
|
+
Promise<string>
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
#### 示例代码
|
|
150
368
|
|
|
151
369
|
```js
|
|
152
|
-
|
|
370
|
+
import { generateKBSign } from '@kbapp/js-bridge'
|
|
371
|
+
|
|
372
|
+
generateKBSign({
|
|
373
|
+
kbSignTime: Date.now(),
|
|
374
|
+
kbSignType: 1,
|
|
375
|
+
// 其他参数...
|
|
376
|
+
success(kbSign) {
|
|
377
|
+
console.log('签名结果', kbSign)
|
|
378
|
+
},
|
|
379
|
+
fail(error) {
|
|
380
|
+
console.log('签名失败', error)
|
|
381
|
+
},
|
|
382
|
+
})
|
|
153
383
|
```
|
|
154
384
|
|
|
385
|
+
> 支持 Promise 风格
|
|
386
|
+
|
|
155
387
|
---
|
|
156
388
|
|
|
157
|
-
###
|
|
389
|
+
### getAppLoginInfo
|
|
390
|
+
|
|
391
|
+
> 获取 app 登录信息.如果未登录返回 null
|
|
392
|
+
|
|
393
|
+
#### 请求参数
|
|
394
|
+
|
|
395
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
396
|
+
| ---------- | ----------------------------- | -------------- | -------- | -------- |
|
|
397
|
+
| `success` | `(res: AppBridgedUserInfo | null) => void` | 否 | 成功回调 |
|
|
398
|
+
| `fail` | `(error: BridgeCode) => void` | 否 | 失败回调 |
|
|
399
|
+
| `complete` | `() => void` | 否 | 完成回调 |
|
|
400
|
+
|
|
401
|
+
#### 返回值
|
|
402
|
+
|
|
403
|
+
```js
|
|
404
|
+
Promise<AppBridgedUserInfo | null>
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
#### 示例代码
|
|
408
|
+
|
|
409
|
+
```js
|
|
410
|
+
import { getAppLoginInfo } from '@kbapp/js-bridge'
|
|
411
|
+
|
|
412
|
+
getAppLoginInfo({
|
|
413
|
+
success(loginInfo) {
|
|
414
|
+
if (loginInfo) {
|
|
415
|
+
console.log('已登录', loginInfo)
|
|
416
|
+
} else {
|
|
417
|
+
console.log('未登录')
|
|
418
|
+
}
|
|
419
|
+
},
|
|
420
|
+
fail(error) {
|
|
421
|
+
console.log('获取登录信息失败', error)
|
|
422
|
+
},
|
|
423
|
+
})
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
> 支持 Promise 风格
|
|
158
427
|
|
|
159
428
|
---
|
|
160
429
|
|
|
161
|
-
###
|
|
430
|
+
### getAppBaseInfo
|
|
162
431
|
|
|
163
|
-
>
|
|
432
|
+
> 获取设备信息
|
|
164
433
|
|
|
165
434
|
#### 请求参数
|
|
166
435
|
|
|
167
|
-
| 参数
|
|
168
|
-
|
|
|
169
|
-
|
|
|
170
|
-
|
|
|
171
|
-
|
|
|
172
|
-
| imageUrl | string | 必填 | 分享的图片 |
|
|
436
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
437
|
+
| ---------- | ----------------------------- | ---- | -------- |
|
|
438
|
+
| `success` | `(res: AppBaseInfo) => void` | 否 | 成功回调 |
|
|
439
|
+
| `fail` | `(error: BridgeCode) => void` | 否 | 失败回调 |
|
|
440
|
+
| `complete` | `() => void` | 否 | 完成回调 |
|
|
173
441
|
|
|
174
442
|
#### 返回值
|
|
175
443
|
|
|
176
444
|
```js
|
|
177
|
-
|
|
445
|
+
Promise<AppBaseInfo>
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
#### 示例代码
|
|
449
|
+
|
|
450
|
+
```js
|
|
451
|
+
import { getAppBaseInfo } from '@kbapp/js-bridge'
|
|
452
|
+
|
|
453
|
+
getAppBaseInfo({
|
|
454
|
+
success(deviceInfo) {
|
|
455
|
+
console.log('设备信息', deviceInfo)
|
|
456
|
+
console.log('版本号', deviceInfo.vcode)
|
|
457
|
+
},
|
|
458
|
+
fail(error) {
|
|
459
|
+
console.log('获取设备信息失败', error)
|
|
460
|
+
},
|
|
461
|
+
})
|
|
178
462
|
```
|
|
179
463
|
|
|
464
|
+
> 支持 Promise 风格
|
|
465
|
+
|
|
180
466
|
---
|
|
181
467
|
|
|
182
|
-
###
|
|
468
|
+
### openAppSharePanel
|
|
183
469
|
|
|
184
|
-
>
|
|
470
|
+
> 主动唤起分享面板
|
|
185
471
|
|
|
186
472
|
#### 请求参数
|
|
187
473
|
|
|
188
|
-
| 参数
|
|
189
|
-
|
|
|
190
|
-
|
|
|
474
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
475
|
+
| ---------- | ----------------------------- | ---- | ------------ |
|
|
476
|
+
| `title` | `string` | 是 | 分享标题 |
|
|
477
|
+
| `content` | `string` | 否 | 分享内容 |
|
|
478
|
+
| `imageUrl` | `string` | 是 | 分享图片 URL |
|
|
479
|
+
| `url` | `string` | 是 | 分享链接 URL |
|
|
480
|
+
| `success` | `() => void` | 否 | 成功回调 |
|
|
481
|
+
| `fail` | `(error: BridgeCode) => void` | 否 | 失败回调 |
|
|
482
|
+
| `complete` | `() => void` | 否 | 完成回调 |
|
|
191
483
|
|
|
192
484
|
#### 返回值
|
|
193
485
|
|
|
@@ -195,80 +487,193 @@ void
|
|
|
195
487
|
Promise<void>
|
|
196
488
|
```
|
|
197
489
|
|
|
198
|
-
####
|
|
490
|
+
#### 示例代码
|
|
199
491
|
|
|
200
492
|
```js
|
|
201
|
-
|
|
493
|
+
import { openAppSharePanel } from '@kbapp/js-bridge'
|
|
494
|
+
|
|
495
|
+
openAppSharePanel({
|
|
496
|
+
title: '开吧分享',
|
|
497
|
+
content: '开吧,开汽车上新生活!',
|
|
498
|
+
url: 'http://www.kaiba315.com.cn/',
|
|
499
|
+
imageUrl: 'https://static.kaiba315.com.cn/kaiba-logo.png',
|
|
500
|
+
success() {
|
|
501
|
+
console.log('打开分享面板成功')
|
|
502
|
+
},
|
|
503
|
+
fail(error) {
|
|
504
|
+
console.log('打开分享面板失败', error)
|
|
505
|
+
},
|
|
506
|
+
})
|
|
202
507
|
```
|
|
203
508
|
|
|
509
|
+
> 支持 Promise 风格
|
|
510
|
+
|
|
204
511
|
---
|
|
205
512
|
|
|
206
|
-
###
|
|
513
|
+
### openPostEditor
|
|
207
514
|
|
|
208
|
-
>
|
|
515
|
+
> 唤起发帖器
|
|
209
516
|
|
|
210
517
|
#### 请求参数
|
|
211
518
|
|
|
212
|
-
| 参数
|
|
213
|
-
|
|
|
214
|
-
|
|
|
519
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
520
|
+
| -------------------- | --------------------------------- | ---- | ---------------------------- |
|
|
521
|
+
| `hint` | `string` | 否 | 文本输入框提示文案 |
|
|
522
|
+
| `initialText` | `string` | 否 | 初始化文本内容 |
|
|
523
|
+
| `audio` | `boolean` | 否 | 是否显示音频按钮,默认 true |
|
|
524
|
+
| `image` | `boolean` | 否 | 是否显示图片按钮,默认 true |
|
|
525
|
+
| `video` | `boolean` | 否 | 是否显示视频按钮,默认 true |
|
|
526
|
+
| `address` | `boolean` | 否 | 是否显示定位按钮,默认 true |
|
|
527
|
+
| `asset_video` | `boolean` | 否 | 是否显示媒资视频,默认 false |
|
|
528
|
+
| `audio_must` | `boolean` | 否 | 音频是否必传 |
|
|
529
|
+
| `image_must` | `boolean` | 否 | 图片是否必传 |
|
|
530
|
+
| `max_image_count` | `number` | 否 | 图片最大张数,默认 9 |
|
|
531
|
+
| `min_image_count` | `number` | 否 | 图片最小张数,默认 0 |
|
|
532
|
+
| `video_must` | `boolean` | 否 | 视频是否必传 |
|
|
533
|
+
| `text_must` | `boolean` | 否 | 文本内容是否必传 |
|
|
534
|
+
| `content_max_length` | `number` | 否 | 文本最大长度,默认 1000 |
|
|
535
|
+
| `content_min_length` | `number` | 否 | 文本最小长度,默认 0 |
|
|
536
|
+
| `success` | `(res: PostEditorResult) => void` | 否 | 成功回调 |
|
|
537
|
+
| `fail` | `(error: BridgeCode) => void` | 否 | 失败回调 |
|
|
538
|
+
| `complete` | `() => void` | 否 | 完成回调 |
|
|
215
539
|
|
|
216
540
|
#### 返回值
|
|
217
541
|
|
|
218
542
|
```js
|
|
219
|
-
Promise<
|
|
543
|
+
Promise<{
|
|
544
|
+
content: string
|
|
545
|
+
street?: string
|
|
546
|
+
audio?: unknown
|
|
547
|
+
video?: unknown
|
|
548
|
+
images?: { url: string; width: number; height: number }[]
|
|
549
|
+
}>
|
|
220
550
|
```
|
|
221
551
|
|
|
222
|
-
####
|
|
552
|
+
#### 示例代码
|
|
223
553
|
|
|
224
554
|
```js
|
|
225
|
-
|
|
555
|
+
import { openPostEditor } from '@kbapp/js-bridge'
|
|
556
|
+
|
|
557
|
+
openPostEditor({
|
|
558
|
+
hint: '请输入内容',
|
|
559
|
+
initialText: '默认内容',
|
|
560
|
+
image: true,
|
|
561
|
+
max_image_count: 9,
|
|
562
|
+
success(result) {
|
|
563
|
+
console.log('发帖内容', result)
|
|
564
|
+
},
|
|
565
|
+
fail(error) {
|
|
566
|
+
console.log('打开发帖器失败', error)
|
|
567
|
+
},
|
|
568
|
+
})
|
|
226
569
|
```
|
|
227
570
|
|
|
571
|
+
> 支持 Promise 风格
|
|
572
|
+
|
|
228
573
|
---
|
|
229
574
|
|
|
230
|
-
###
|
|
575
|
+
### onAppSharePanelShow
|
|
231
576
|
|
|
232
|
-
>
|
|
577
|
+
> 监听分享面板打开时触发(主动和被动)
|
|
233
578
|
|
|
234
579
|
#### 请求参数
|
|
235
580
|
|
|
236
|
-
|
|
581
|
+
| 参数 | 类型 | 说明 |
|
|
582
|
+
| ---------- | ----------- | -------------------- |
|
|
583
|
+
| `callback` | `()=> void` | 分享面板打开时的回调 |
|
|
237
584
|
|
|
238
585
|
#### 返回值
|
|
239
586
|
|
|
240
587
|
```js
|
|
241
|
-
|
|
588
|
+
// 返回函数,调用该函数取消监听
|
|
589
|
+
() => void
|
|
590
|
+
```
|
|
591
|
+
|
|
592
|
+
#### 示例代码
|
|
593
|
+
|
|
594
|
+
```js
|
|
595
|
+
import { onAppSharePanelShow } from '@kbapp/js-bridge'
|
|
596
|
+
|
|
597
|
+
const stopHandle = onAppSharePanelShow(() => {
|
|
598
|
+
console.log('分享面板打开')
|
|
599
|
+
})
|
|
600
|
+
|
|
601
|
+
// stopHandle() 停止监听
|
|
242
602
|
```
|
|
243
603
|
|
|
244
604
|
---
|
|
245
605
|
|
|
246
|
-
###
|
|
606
|
+
### onAppLoginSuccess
|
|
247
607
|
|
|
248
|
-
>
|
|
608
|
+
> 登录完成会触发回调函数,调用该时将会立刻检测当前是否登录
|
|
249
609
|
|
|
250
610
|
#### 请求参数
|
|
251
611
|
|
|
252
|
-
|
|
612
|
+
| 参数 | 类型 | 说明 |
|
|
613
|
+
| ---------- | ----------------------------------------- | ------------ |
|
|
614
|
+
| `callback` | `(loginInfo: AppBridgedUserInfo) => void` | 登录成功回调 |
|
|
253
615
|
|
|
254
616
|
#### 返回值
|
|
255
617
|
|
|
256
618
|
```js
|
|
257
|
-
|
|
619
|
+
// 返回函数,调用该函数,停止监听
|
|
620
|
+
() => void
|
|
258
621
|
```
|
|
259
622
|
|
|
260
|
-
####
|
|
623
|
+
#### 示例代码
|
|
261
624
|
|
|
262
625
|
```js
|
|
263
|
-
import {
|
|
626
|
+
import { onAppLoginSuccess } from '@kbapp/js-bridge'
|
|
264
627
|
|
|
265
|
-
|
|
266
|
-
console.log('
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
|
|
628
|
+
const handle = onAppLoginSuccess((loginInfo) => {
|
|
629
|
+
console.log('登录成功', loginInfo)
|
|
630
|
+
})
|
|
631
|
+
|
|
632
|
+
// handle() 停止监听
|
|
633
|
+
```
|
|
634
|
+
|
|
635
|
+
---
|
|
636
|
+
|
|
637
|
+
### reportDAEvent
|
|
638
|
+
|
|
639
|
+
> 上报数据埋点
|
|
640
|
+
|
|
641
|
+
#### 请求参数
|
|
642
|
+
|
|
643
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
644
|
+
| ------------- | ----------------------------- | ---- | ---------------- |
|
|
645
|
+
| `eventName` | `string` | 是 | 事件名 |
|
|
646
|
+
| `eventParams` | `object` | 否 | 上报参数 |
|
|
647
|
+
| `eventType` | `string` | 否 | 开始结束类型传递 |
|
|
648
|
+
| `success` | `() => void` | 否 | 成功回调 |
|
|
649
|
+
| `fail` | `(error: BridgeCode) => void` | 否 | 失败回调 |
|
|
650
|
+
| `complete` | `() => void` | 否 | 完成回调 |
|
|
651
|
+
|
|
652
|
+
#### 返回值
|
|
653
|
+
|
|
654
|
+
```js
|
|
655
|
+
Promise<void>
|
|
656
|
+
```
|
|
657
|
+
|
|
658
|
+
#### 示例代码
|
|
659
|
+
|
|
660
|
+
```js
|
|
661
|
+
import { reportDAEvent } from '@kbapp/js-bridge'
|
|
662
|
+
|
|
663
|
+
reportDAEvent({
|
|
664
|
+
eventName: 'page_view',
|
|
665
|
+
eventParams: { page: 'home' },
|
|
666
|
+
success() {
|
|
667
|
+
console.log('上报数据成功')
|
|
668
|
+
},
|
|
669
|
+
fail(error) {
|
|
670
|
+
console.log('上报数据失败', error)
|
|
671
|
+
},
|
|
672
|
+
})
|
|
270
673
|
```
|
|
271
674
|
|
|
675
|
+
> 支持 Promise 风格
|
|
676
|
+
|
|
272
677
|
---
|
|
273
678
|
|
|
274
679
|
### runAction
|
|
@@ -277,157 +682,615 @@ if (await canIUse('sharePoster')) {
|
|
|
277
682
|
|
|
278
683
|
#### 请求参数
|
|
279
684
|
|
|
280
|
-
| 参数
|
|
281
|
-
|
|
|
282
|
-
| action | string
|
|
283
|
-
| actionParams |
|
|
685
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
686
|
+
| -------------- | ----------------------------- | ---- | ------------ |
|
|
687
|
+
| `action` | `string` | 是 | action |
|
|
688
|
+
| `actionParams` | `object` | 否 | actionParams |
|
|
689
|
+
| `success` | `() => void` | 否 | 成功回调 |
|
|
690
|
+
| `fail` | `(error: BridgeCode) => void` | 否 | 失败回调 |
|
|
691
|
+
| `complete` | `() => void` | 否 | 完成回调 |
|
|
284
692
|
|
|
285
693
|
#### 返回值
|
|
286
694
|
|
|
287
|
-
|
|
695
|
+
```js
|
|
696
|
+
Promise<void>
|
|
697
|
+
```
|
|
698
|
+
|
|
699
|
+
#### 示例代码
|
|
700
|
+
|
|
701
|
+
```js
|
|
702
|
+
import { runAction } from '@kbapp/js-bridge'
|
|
703
|
+
|
|
704
|
+
runAction({
|
|
705
|
+
action: 'pageWeb',
|
|
706
|
+
actionParams: {
|
|
707
|
+
url: 'https://www.baidu.com',
|
|
708
|
+
},
|
|
709
|
+
success() {
|
|
710
|
+
console.log('执行成功')
|
|
711
|
+
},
|
|
712
|
+
fail(error) {
|
|
713
|
+
console.log('执行失败', error)
|
|
714
|
+
},
|
|
715
|
+
})
|
|
716
|
+
```
|
|
717
|
+
|
|
718
|
+
> 支持 Promise 风格
|
|
288
719
|
|
|
289
720
|
---
|
|
290
721
|
|
|
291
|
-
###
|
|
722
|
+
### saveImageToLocal
|
|
292
723
|
|
|
293
|
-
>
|
|
724
|
+
> 保存图片到本地
|
|
294
725
|
|
|
295
726
|
#### 请求参数
|
|
296
727
|
|
|
297
|
-
|
|
728
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
729
|
+
| ---------- | ----------------------------- | ---- | ------------ |
|
|
730
|
+
| `imageUrl` | `string` | 是 | 图片网络地址 |
|
|
731
|
+
| `success` | `() => void` | 否 | 成功回调 |
|
|
732
|
+
| `fail` | `(error: BridgeCode) => void` | 否 | 失败回调 |
|
|
733
|
+
| `complete` | `() => void` | 否 | 完成回调 |
|
|
298
734
|
|
|
299
735
|
#### 返回值
|
|
300
736
|
|
|
301
|
-
|
|
737
|
+
```js
|
|
738
|
+
Promise<void>
|
|
739
|
+
```
|
|
740
|
+
|
|
741
|
+
#### 异常返回值
|
|
742
|
+
|
|
743
|
+
```js
|
|
744
|
+
Promise<{ errCode: BridgeCode }>
|
|
745
|
+
```
|
|
746
|
+
|
|
747
|
+
#### 示例代码
|
|
748
|
+
|
|
749
|
+
```js
|
|
750
|
+
import { saveImageToLocal, BridgeCode } from '@kbapp/js-bridge'
|
|
751
|
+
|
|
752
|
+
saveImageToLocal({
|
|
753
|
+
imageUrl: 'https://static.kaiba315.com.cn/kaiba-logo.png',
|
|
754
|
+
success() {
|
|
755
|
+
console.log('保存图片成功')
|
|
756
|
+
},
|
|
757
|
+
fail(error) {
|
|
758
|
+
console.log('保存图片失败', error)
|
|
759
|
+
},
|
|
760
|
+
})
|
|
761
|
+
```
|
|
762
|
+
|
|
763
|
+
> 支持 Promise 风格
|
|
302
764
|
|
|
303
765
|
---
|
|
304
766
|
|
|
305
|
-
###
|
|
767
|
+
### saveVideoToLocal
|
|
306
768
|
|
|
307
|
-
>
|
|
769
|
+
> 保存视频到本地
|
|
308
770
|
|
|
309
771
|
#### 请求参数
|
|
310
772
|
|
|
311
|
-
| 参数
|
|
312
|
-
|
|
|
313
|
-
|
|
|
314
|
-
|
|
|
315
|
-
|
|
|
316
|
-
|
|
|
317
|
-
| tmuTrack | any | 选填 | 天目埋点 |
|
|
318
|
-
| qqUrl | string | 选填 | 未知 |
|
|
773
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
774
|
+
| ---------- | ----------------------------- | ---- | ------------ |
|
|
775
|
+
| `videoUrl` | `string` | 是 | 视频网络地址 |
|
|
776
|
+
| `success` | `() => void` | 否 | 成功回调 |
|
|
777
|
+
| `fail` | `(error: BridgeCode) => void` | 否 | 失败回调 |
|
|
778
|
+
| `complete` | `() => void` | 否 | 完成回调 |
|
|
319
779
|
|
|
320
780
|
#### 返回值
|
|
321
781
|
|
|
322
|
-
|
|
782
|
+
```js
|
|
783
|
+
Promise<void>
|
|
784
|
+
```
|
|
785
|
+
|
|
786
|
+
#### 异常返回值
|
|
787
|
+
|
|
788
|
+
```js
|
|
789
|
+
Promise<{ errCode: BridgeCode }>
|
|
790
|
+
```
|
|
791
|
+
|
|
792
|
+
#### 示例代码
|
|
793
|
+
|
|
794
|
+
```js
|
|
795
|
+
import { saveVideoToLocal } from '@kbapp/js-bridge'
|
|
796
|
+
|
|
797
|
+
saveVideoToLocal({
|
|
798
|
+
videoUrl: 'https://example.com/video.mp4',
|
|
799
|
+
success() {
|
|
800
|
+
console.log('保存视频成功')
|
|
801
|
+
},
|
|
802
|
+
fail(error) {
|
|
803
|
+
console.log('保存视频失败', error)
|
|
804
|
+
},
|
|
805
|
+
})
|
|
806
|
+
```
|
|
807
|
+
|
|
808
|
+
> 支持 Promise 风格
|
|
323
809
|
|
|
324
810
|
---
|
|
325
811
|
|
|
326
|
-
###
|
|
812
|
+
### scanQRCode
|
|
327
813
|
|
|
328
|
-
>
|
|
814
|
+
> 扫描二维码
|
|
329
815
|
|
|
330
816
|
#### 请求参数
|
|
331
817
|
|
|
332
|
-
|
|
818
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
819
|
+
| ---------- | ----------------------------- | ---- | ---------------------- |
|
|
820
|
+
| `success` | `(res: string) => void` | 否 | 成功回调,返回扫描结果 |
|
|
821
|
+
| `fail` | `(error: BridgeCode) => void` | 否 | 失败回调 |
|
|
822
|
+
| `complete` | `() => void` | 否 | 完成回调 |
|
|
333
823
|
|
|
334
824
|
#### 返回值
|
|
335
825
|
|
|
336
826
|
```js
|
|
337
|
-
Promise<
|
|
827
|
+
Promise<string>
|
|
828
|
+
```
|
|
829
|
+
|
|
830
|
+
#### 示例代码
|
|
338
831
|
|
|
832
|
+
```js
|
|
833
|
+
import { scanQRCode } from '@kbapp/js-bridge'
|
|
834
|
+
|
|
835
|
+
scanQRCode({
|
|
836
|
+
success(result) {
|
|
837
|
+
console.log('扫描结果', result)
|
|
838
|
+
},
|
|
839
|
+
fail(error) {
|
|
840
|
+
console.log('扫描失败', error)
|
|
841
|
+
},
|
|
842
|
+
})
|
|
339
843
|
```
|
|
340
844
|
|
|
845
|
+
> 支持 Promise 风格
|
|
846
|
+
|
|
341
847
|
---
|
|
342
848
|
|
|
343
|
-
###
|
|
849
|
+
### setScreenOrientation
|
|
344
850
|
|
|
345
|
-
>
|
|
851
|
+
> 设置屏幕方向
|
|
346
852
|
|
|
347
853
|
#### 请求参数
|
|
348
854
|
|
|
349
|
-
|
|
855
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
856
|
+
| ------------- | ----------------------------- | ---- | ---------------------- |
|
|
857
|
+
| `orientation` | `number` | 是 | 屏幕方向 0:竖屏 1:横屏 |
|
|
858
|
+
| `success` | `() => void` | 否 | 成功回调 |
|
|
859
|
+
| `fail` | `(error: BridgeCode) => void` | 否 | 失败回调 |
|
|
860
|
+
| `complete` | `() => void` | 否 | 完成回调 |
|
|
350
861
|
|
|
351
862
|
#### 返回值
|
|
352
863
|
|
|
353
864
|
```js
|
|
354
|
-
Promise<
|
|
865
|
+
Promise<void>
|
|
866
|
+
```
|
|
867
|
+
|
|
868
|
+
#### 示例代码
|
|
869
|
+
|
|
870
|
+
```js
|
|
871
|
+
import { setScreenOrientation } from '@kbapp/js-bridge'
|
|
872
|
+
|
|
873
|
+
// 设置为横屏
|
|
874
|
+
setScreenOrientation({
|
|
875
|
+
orientation: 1,
|
|
876
|
+
success() {
|
|
877
|
+
console.log('设置横屏成功')
|
|
878
|
+
},
|
|
879
|
+
fail(error) {
|
|
880
|
+
console.log('设置横屏失败', error)
|
|
881
|
+
},
|
|
882
|
+
})
|
|
355
883
|
|
|
884
|
+
// 设置为竖屏
|
|
885
|
+
setScreenOrientation({
|
|
886
|
+
orientation: 0,
|
|
887
|
+
success() {
|
|
888
|
+
console.log('设置竖屏成功')
|
|
889
|
+
},
|
|
890
|
+
fail(error) {
|
|
891
|
+
console.log('设置竖屏失败', error)
|
|
892
|
+
},
|
|
893
|
+
})
|
|
356
894
|
```
|
|
357
895
|
|
|
896
|
+
> 支持 Promise 风格
|
|
897
|
+
|
|
358
898
|
---
|
|
359
899
|
|
|
360
|
-
###
|
|
900
|
+
### setWebViewTitle
|
|
361
901
|
|
|
362
|
-
>
|
|
902
|
+
> 设置网页标题(建议通过 document.title 设置)
|
|
363
903
|
|
|
364
904
|
#### 请求参数
|
|
365
905
|
|
|
906
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
907
|
+
| ---------- | ----------------------------- | ---- | ---------------- |
|
|
908
|
+
| `title` | `string` | 是 | webview 标题文案 |
|
|
909
|
+
| `success` | `() => void` | 否 | 成功回调 |
|
|
910
|
+
| `fail` | `(error: BridgeCode) => void` | 否 | 失败回调 |
|
|
911
|
+
| `complete` | `() => void` | 否 | 完成回调 |
|
|
912
|
+
|
|
913
|
+
#### 返回值
|
|
914
|
+
|
|
915
|
+
```js
|
|
916
|
+
Promise<void>
|
|
917
|
+
```
|
|
918
|
+
|
|
919
|
+
#### 异常返回值
|
|
920
|
+
|
|
921
|
+
```js
|
|
922
|
+
Promise<{ errCode: BridgeCode }>
|
|
923
|
+
```
|
|
924
|
+
|
|
925
|
+
#### 示例代码
|
|
926
|
+
|
|
366
927
|
```js
|
|
367
|
-
|
|
928
|
+
import { setWebViewTitle } from '@kbapp/js-bridge'
|
|
929
|
+
|
|
930
|
+
setWebViewTitle({
|
|
931
|
+
title: '页面标题',
|
|
932
|
+
success() {
|
|
933
|
+
console.log('设置标题成功')
|
|
934
|
+
},
|
|
935
|
+
fail(error) {
|
|
936
|
+
console.log('设置标题失败', error)
|
|
937
|
+
},
|
|
938
|
+
})
|
|
368
939
|
```
|
|
369
940
|
|
|
941
|
+
> 支持 Promise 风格
|
|
942
|
+
|
|
943
|
+
---
|
|
944
|
+
|
|
945
|
+
### shareImage
|
|
946
|
+
|
|
947
|
+
> 分享海报
|
|
948
|
+
|
|
949
|
+
#### 请求参数
|
|
950
|
+
|
|
951
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
952
|
+
| ---------- | ----------------------------- | ---- | ------------------------------------- |
|
|
953
|
+
| `imageUrl` | `string` | 是 | 分享的图片链接,仅支持网络地址,png/jpg |
|
|
954
|
+
| `success` | `() => void` | 否 | 成功回调 |
|
|
955
|
+
| `fail` | `(error: BridgeCode) => void` | 否 | 失败回调 |
|
|
956
|
+
| `complete` | `() => void` | 否 | 完成回调 |
|
|
957
|
+
|
|
370
958
|
#### 返回值
|
|
371
959
|
|
|
372
960
|
```js
|
|
373
|
-
|
|
374
|
-
|
|
961
|
+
Promise<void>
|
|
962
|
+
```
|
|
963
|
+
|
|
964
|
+
#### 异常返回值
|
|
965
|
+
|
|
966
|
+
```js
|
|
967
|
+
Promise<{ errCode: BridgeCode }>
|
|
375
968
|
```
|
|
376
969
|
|
|
377
970
|
#### 示例代码
|
|
378
971
|
|
|
379
972
|
```js
|
|
380
|
-
import {
|
|
973
|
+
import { shareImage } from '@kbapp/js-bridge'
|
|
381
974
|
|
|
382
|
-
|
|
383
|
-
|
|
975
|
+
shareImage({
|
|
976
|
+
imageUrl: 'https://example.com/poster.png',
|
|
977
|
+
success() {
|
|
978
|
+
console.log('分享海报成功')
|
|
979
|
+
},
|
|
980
|
+
fail(error) {
|
|
981
|
+
console.log('分享海报失败', error)
|
|
982
|
+
},
|
|
384
983
|
})
|
|
984
|
+
```
|
|
385
985
|
|
|
386
|
-
|
|
986
|
+
> 支持 Promise 风格
|
|
987
|
+
|
|
988
|
+
---
|
|
989
|
+
|
|
990
|
+
### subscribeNotify
|
|
991
|
+
|
|
992
|
+
> 订阅通知
|
|
993
|
+
|
|
994
|
+
#### 请求参数
|
|
995
|
+
|
|
996
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
997
|
+
| ---------- | ----------------------------- | ---- | -------- |
|
|
998
|
+
| `bizType` | `number` | 是 | 业务类型 |
|
|
999
|
+
| `subState` | `number` | 是 | 订阅状态 |
|
|
1000
|
+
| `success` | `() => void` | 否 | 成功回调 |
|
|
1001
|
+
| `fail` | `(error: BridgeCode) => void` | 否 | 失败回调 |
|
|
1002
|
+
| `complete` | `() => void` | 否 | 完成回调 |
|
|
1003
|
+
|
|
1004
|
+
#### 返回值
|
|
1005
|
+
|
|
1006
|
+
```js
|
|
1007
|
+
Promise<void>
|
|
1008
|
+
```
|
|
1009
|
+
|
|
1010
|
+
#### 示例代码
|
|
1011
|
+
|
|
1012
|
+
```js
|
|
1013
|
+
import { subscribeNotify } from '@kbapp/js-bridge'
|
|
1014
|
+
|
|
1015
|
+
subscribeNotify({
|
|
1016
|
+
bizType: 1,
|
|
1017
|
+
subState: 1,
|
|
1018
|
+
success() {
|
|
1019
|
+
console.log('订阅通知成功')
|
|
1020
|
+
},
|
|
1021
|
+
fail(error) {
|
|
1022
|
+
console.log('订阅通知失败', error)
|
|
1023
|
+
},
|
|
1024
|
+
})
|
|
1025
|
+
```
|
|
1026
|
+
|
|
1027
|
+
> 支持 Promise 风格
|
|
1028
|
+
|
|
1029
|
+
---
|
|
1030
|
+
|
|
1031
|
+
### triggerAppLogin
|
|
1032
|
+
|
|
1033
|
+
> 触发 app 登录
|
|
1034
|
+
|
|
1035
|
+
#### 请求参数
|
|
1036
|
+
|
|
1037
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
1038
|
+
| ---------- | ----------------------------- | ---- | -------- |
|
|
1039
|
+
| `success` | `() => void` | 否 | 成功回调 |
|
|
1040
|
+
| `fail` | `(error: BridgeCode) => void` | 否 | 失败回调 |
|
|
1041
|
+
| `complete` | `() => void` | 否 | 完成回调 |
|
|
1042
|
+
|
|
1043
|
+
#### 返回值
|
|
1044
|
+
|
|
1045
|
+
```js
|
|
1046
|
+
Promise<void>
|
|
387
1047
|
```
|
|
388
1048
|
|
|
1049
|
+
#### 示例代码
|
|
1050
|
+
|
|
1051
|
+
```js
|
|
1052
|
+
import { triggerAppLogin, onAppLoginSuccess } from '@kbapp/js-bridge'
|
|
1053
|
+
|
|
1054
|
+
// 监听登录成功
|
|
1055
|
+
const handle = onAppLoginSuccess((loginInfo) => {
|
|
1056
|
+
console.log('登录成功', loginInfo)
|
|
1057
|
+
handle() // 停止监听
|
|
1058
|
+
})
|
|
1059
|
+
|
|
1060
|
+
// 触发登录
|
|
1061
|
+
triggerAppLogin({
|
|
1062
|
+
success() {
|
|
1063
|
+
console.log('触发登录成功')
|
|
1064
|
+
},
|
|
1065
|
+
fail(error) {
|
|
1066
|
+
console.log('触发登录失败', error)
|
|
1067
|
+
},
|
|
1068
|
+
})
|
|
1069
|
+
```
|
|
1070
|
+
|
|
1071
|
+
> 支持 Promise 风格
|
|
1072
|
+
|
|
389
1073
|
---
|
|
390
1074
|
|
|
1075
|
+
### isAppVersionSupport
|
|
1076
|
+
|
|
1077
|
+
> 判断当前版本号是否支持
|
|
1078
|
+
|
|
1079
|
+
#### 请求参数
|
|
1080
|
+
|
|
1081
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
1082
|
+
| ------------ | ----------------------------- | ---- | ---------------------- |
|
|
1083
|
+
| `minVersion` | `number` | 是 | 最低支持版本号 |
|
|
1084
|
+
| `success` | `(res: boolean) => void` | 否 | 成功回调,返回是否支持 |
|
|
1085
|
+
| `fail` | `(error: BridgeCode) => void` | 否 | 失败回调 |
|
|
1086
|
+
| `complete` | `() => void` | 否 | 完成回调 |
|
|
1087
|
+
|
|
1088
|
+
#### 返回值
|
|
1089
|
+
|
|
1090
|
+
```js
|
|
1091
|
+
Promise<boolean>
|
|
1092
|
+
```
|
|
1093
|
+
|
|
1094
|
+
#### 示例代码
|
|
1095
|
+
|
|
1096
|
+
```js
|
|
1097
|
+
import { isAppVersionSupport } from '@kbapp/js-bridge'
|
|
1098
|
+
|
|
1099
|
+
isAppVersionSupport({
|
|
1100
|
+
minVersion: 80711,
|
|
1101
|
+
success(result) {
|
|
1102
|
+
console.log('是否能使用', result)
|
|
1103
|
+
},
|
|
1104
|
+
fail(error) {
|
|
1105
|
+
console.log('检查版本支持失败', error)
|
|
1106
|
+
},
|
|
1107
|
+
})
|
|
1108
|
+
```
|
|
1109
|
+
|
|
1110
|
+
> 支持 Promise 风格
|
|
1111
|
+
|
|
1112
|
+
## 数据模型
|
|
1113
|
+
|
|
391
1114
|
### AppBridgedUserInfo
|
|
392
1115
|
|
|
393
|
-
>
|
|
1116
|
+
> 登录信息模型
|
|
394
1117
|
|
|
395
1118
|
```js
|
|
396
|
-
|
|
1119
|
+
class AppBridgedUserInfo {
|
|
397
1120
|
/** 车牌号:例如浙A999999 */
|
|
398
1121
|
carNo?: string
|
|
1122
|
+
|
|
399
1123
|
/** 未知 */
|
|
400
1124
|
role?: number
|
|
1125
|
+
|
|
401
1126
|
/** 手机号 */
|
|
402
|
-
mobile
|
|
1127
|
+
mobile!: string
|
|
1128
|
+
|
|
403
1129
|
/** 性别 */
|
|
404
|
-
sex
|
|
1130
|
+
sex!: number
|
|
1131
|
+
|
|
405
1132
|
/** 电台id */
|
|
406
|
-
siteId
|
|
1133
|
+
siteId!: number
|
|
1134
|
+
|
|
407
1135
|
/** 头像地址 */
|
|
408
|
-
avatar
|
|
1136
|
+
avatar!: string
|
|
1137
|
+
|
|
409
1138
|
/** token */
|
|
410
|
-
token
|
|
1139
|
+
token!: string
|
|
1140
|
+
|
|
411
1141
|
/** 用户id */
|
|
412
|
-
userId
|
|
1142
|
+
userId!: number
|
|
1143
|
+
|
|
413
1144
|
/** 用户名 */
|
|
414
|
-
userName
|
|
415
|
-
}
|
|
1145
|
+
userName?: string
|
|
1146
|
+
}
|
|
1147
|
+
```
|
|
1148
|
+
|
|
1149
|
+
### AppShareModel
|
|
1150
|
+
|
|
1151
|
+
> 应用分享模型
|
|
416
1152
|
|
|
1153
|
+
```js
|
|
1154
|
+
class AppShareModel {
|
|
1155
|
+
/**
|
|
1156
|
+
* 标题
|
|
1157
|
+
*/
|
|
1158
|
+
title!: string
|
|
1159
|
+
|
|
1160
|
+
/**
|
|
1161
|
+
* 文字内容
|
|
1162
|
+
*/
|
|
1163
|
+
content?: string
|
|
1164
|
+
|
|
1165
|
+
/**
|
|
1166
|
+
* 图片
|
|
1167
|
+
*/
|
|
1168
|
+
imageUrl!: string
|
|
1169
|
+
|
|
1170
|
+
/**
|
|
1171
|
+
* 分享链接
|
|
1172
|
+
*/
|
|
1173
|
+
url!: string
|
|
1174
|
+
|
|
1175
|
+
/**
|
|
1176
|
+
* 分享功能是否开启. 默认为 true.
|
|
1177
|
+
* 当分享功能关闭时, 其他分享相关字段均无效.
|
|
1178
|
+
*/
|
|
1179
|
+
enabled?: boolean
|
|
1180
|
+
|
|
1181
|
+
/**
|
|
1182
|
+
* 海报分享标题.
|
|
1183
|
+
* 客户端: 海报分享必须. 若不存在则取 {@link #title}, 若也不存在, 则海报分享功能关闭.
|
|
1184
|
+
* H5: 非必填. 通过桥接给到客户端时, 建议可以只填充 {@link #title}.
|
|
1185
|
+
* 后端: 非必填.
|
|
1186
|
+
*/
|
|
1187
|
+
posterTitle?: string
|
|
1188
|
+
|
|
1189
|
+
/**
|
|
1190
|
+
* 海报分享内容.
|
|
1191
|
+
* 客户端: 非必须. 若不存在则取 {@link #content}, 若也不存在, 则海报只有标题内容.
|
|
1192
|
+
* H5: 非必填. 通过桥接给到客户端时, 建议可以只填充 {@link #content}.
|
|
1193
|
+
* 后端: 非必填.
|
|
1194
|
+
*/
|
|
1195
|
+
posterContent?: string
|
|
1196
|
+
|
|
1197
|
+
/**
|
|
1198
|
+
* 海报分享封面图.
|
|
1199
|
+
* 客户端: 海报分享非必须. 若不存在则取 {@link #imageUrl}, 若也不存在, 则海报无封面.
|
|
1200
|
+
* H5: 非必填. 通过桥接给到客户端时, 建议可以只填充 {@link #imageUrl}.
|
|
1201
|
+
* 后端: 非必填.
|
|
1202
|
+
*/
|
|
1203
|
+
posterUrl?: string
|
|
1204
|
+
|
|
1205
|
+
/**
|
|
1206
|
+
* 海报分享的展示时间.
|
|
1207
|
+
* 客户端: 海报分享非必须. 若不存在则海报不展示时间.
|
|
1208
|
+
* H5: 非必填. 通过桥接给到客户端时, 建议忽略该字段.
|
|
1209
|
+
* 后端: 非必填.
|
|
1210
|
+
*/
|
|
1211
|
+
posterTime?: string
|
|
1212
|
+
|
|
1213
|
+
/** 海报分享展示时间格式. */
|
|
1214
|
+
posterTimeFormat?: string
|
|
1215
|
+
|
|
1216
|
+
/**
|
|
1217
|
+
* 海报分享功能是否开启. 默认为 false.
|
|
1218
|
+
* 当海报分享功能关闭时, 其他海报分享相关字段均无效.
|
|
1219
|
+
*/
|
|
1220
|
+
posterEnabled?: boolean
|
|
1221
|
+
|
|
1222
|
+
/**
|
|
1223
|
+
* 分享小程序设置: 小程序原始ID.
|
|
1224
|
+
* 获取方法: 登录小程序管理后台-设置-基本设置-帐号信息.
|
|
1225
|
+
*
|
|
1226
|
+
* 当此字段非空时, 客户端会显示 '分享至小程序' 功能.
|
|
1227
|
+
*/
|
|
1228
|
+
wxMiniUserName?: string
|
|
1229
|
+
|
|
1230
|
+
/**
|
|
1231
|
+
* 分享小程序设置: 小程序页面路径.
|
|
1232
|
+
*/
|
|
1233
|
+
wxMiniPath?: string
|
|
1234
|
+
|
|
1235
|
+
/**
|
|
1236
|
+
* 分享小程序设置: 额外信息.
|
|
1237
|
+
* 通常开发者希望分享出去的小程序被二次打开时可以获取到更多信息, 例如群的标识.
|
|
1238
|
+
*/
|
|
1239
|
+
wxMiniShareTicket?: boolean
|
|
1240
|
+
|
|
1241
|
+
/**
|
|
1242
|
+
* 分享小程序设置: 小程序的类型.
|
|
1243
|
+
* 0为正式版, 1为测试版, 2为体验版.
|
|
1244
|
+
*/
|
|
1245
|
+
wxMiniType?: number
|
|
1246
|
+
}
|
|
417
1247
|
```
|
|
418
1248
|
|
|
419
|
-
|
|
1249
|
+
### AppBaseInfo
|
|
420
1250
|
|
|
421
|
-
|
|
1251
|
+
> 设备信息模型
|
|
422
1252
|
|
|
423
|
-
|
|
1253
|
+
```js
|
|
1254
|
+
interface AppBaseInfo {
|
|
1255
|
+
/** 操作系统,例如 iOS */
|
|
1256
|
+
do: string
|
|
1257
|
+
|
|
1258
|
+
/** 设备型号,例如 iPhone11,2 */
|
|
1259
|
+
db: string
|
|
1260
|
+
|
|
1261
|
+
/** 系统版本,例如 15.5 */
|
|
1262
|
+
dv: string
|
|
424
1263
|
|
|
425
|
-
|
|
1264
|
+
/** 应用版本号(数字),例如 69011 */
|
|
1265
|
+
vcode: number
|
|
1266
|
+
|
|
1267
|
+
/** 应用版本号(字符串),例如 6.90.11 */
|
|
1268
|
+
v: string
|
|
1269
|
+
|
|
1270
|
+
/** 未知 */
|
|
1271
|
+
source: number
|
|
1272
|
+
|
|
1273
|
+
/** 电台 id */
|
|
1274
|
+
siteId: number
|
|
1275
|
+
|
|
1276
|
+
/** 用户 id,当登录时返回 */
|
|
1277
|
+
userId?: number
|
|
1278
|
+
|
|
1279
|
+
/** 未知 */
|
|
1280
|
+
cid: string
|
|
1281
|
+
}
|
|
1282
|
+
```
|
|
1283
|
+
|
|
1284
|
+
## BridgeCode
|
|
1285
|
+
|
|
1286
|
+
> 错误码枚举
|
|
426
1287
|
|
|
427
|
-
|
|
|
428
|
-
|
|
|
429
|
-
|
|
|
430
|
-
|
|
|
1288
|
+
| 常量 | 值 | 说明 |
|
|
1289
|
+
| ----------------------------------- | ---- | ------------------ |
|
|
1290
|
+
| `BridgeCode.UNKNOWN` | 1000 | 未知错误 |
|
|
1291
|
+
| `BridgeCode.UNSUPPORTED_VERSION` | 1001 | 当前开吧版本不支持 |
|
|
1292
|
+
| `BridgeCode.TIMEOUT` | 1002 | 执行超时 |
|
|
1293
|
+
| `BridgeCode.UNSUPPORTED_BRIDGE_ENV` | 1003 | 请在开吧app内执行 |
|
|
431
1294
|
|
|
432
1295
|
## 常见问题
|
|
433
1296
|
|