@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.
Files changed (60) hide show
  1. package/LOGIN.MD +79 -0
  2. package/README.MD +1045 -182
  3. package/dist/core/index.d.ts +68 -16
  4. package/dist/index.d.ts +8 -5
  5. package/dist/index.es.js +516 -0
  6. package/dist/index.umd.js +1 -0
  7. package/dist/lib/app-version-support.d.ts +41 -0
  8. package/dist/lib/bridge-code.d.ts +14 -0
  9. package/dist/lib/check-for-new-version.d.ts +7 -5
  10. package/dist/lib/close-webview.d.ts +6 -2
  11. package/dist/lib/define-permission-usage.d.ts +8 -2
  12. package/dist/lib/generate-kb-sign.d.ts +13 -2
  13. package/dist/lib/{get-device-info.d.ts → get-app-base-info.d.ts} +14 -7
  14. package/dist/lib/open-post-editor.d.ts +47 -4
  15. package/dist/lib/report-da-event.d.ts +33 -0
  16. package/dist/lib/run-action.d.ts +9 -5
  17. package/dist/lib/save-image-to-local.d.ts +8 -4
  18. package/dist/lib/save-video-to-local.d.ts +7 -3
  19. package/dist/lib/scan-qr-code.d.ts +23 -0
  20. package/dist/lib/screen-orientation.d.ts +13 -0
  21. package/dist/lib/set-webview-title.d.ts +7 -3
  22. package/dist/lib/share-image.d.ts +21 -0
  23. package/dist/lib/share-model.d.ts +170 -45
  24. package/dist/lib/subscribe-notify.d.ts +25 -0
  25. package/dist/lib/trigger-login.d.ts +18 -10
  26. package/dist/utils/filter-undefined-properties.d.ts +6 -0
  27. package/dist/utils/promise-cache.d.ts +5 -0
  28. package/dist/utils/wrap-async.d.ts +17 -0
  29. package/examples/index.html +236 -0
  30. package/package.json +17 -4
  31. package/vite.config.ts +32 -0
  32. package/dist/core/index.js +0 -84
  33. package/dist/core/lib/ds-bridge.d.ts +0 -7
  34. package/dist/core/lib/ds-bridge.js +0 -126
  35. package/dist/core/lib/flutter-ds-bridge.js +0 -172
  36. package/dist/core/lib/js-bridge.d.ts +0 -22
  37. package/dist/core/lib/js-bridge.js +0 -188
  38. package/dist/index.js +0 -33
  39. package/dist/lib/can-i-use.d.ts +0 -13
  40. package/dist/lib/can-i-use.js +0 -102
  41. package/dist/lib/check-for-new-version.js +0 -26
  42. package/dist/lib/close-webview.js +0 -24
  43. package/dist/lib/define-permission-usage.js +0 -40
  44. package/dist/lib/generate-kb-sign.js +0 -75
  45. package/dist/lib/get-device-info.js +0 -36
  46. package/dist/lib/js-bridge-code.d.ts +0 -10
  47. package/dist/lib/js-bridge-code.js +0 -14
  48. package/dist/lib/open-post-editor.js +0 -116
  49. package/dist/lib/report-getui.d.ts +0 -14
  50. package/dist/lib/report-getui.js +0 -17
  51. package/dist/lib/run-action.js +0 -29
  52. package/dist/lib/save-image-to-local.js +0 -28
  53. package/dist/lib/save-video-to-local.js +0 -28
  54. package/dist/lib/set-webview-title.js +0 -27
  55. package/dist/lib/share-model.js +0 -80
  56. package/dist/lib/share-poster.d.ts +0 -16
  57. package/dist/lib/share-poster.js +0 -26
  58. package/dist/lib/trigger-login.js +0 -195
  59. package/dist/util/promise-cache.d.ts +0 -5
  60. package/dist/util/promise-cache.js +0 -24
package/README.MD CHANGED
@@ -1,6 +1,6 @@
1
1
  # 开吧客户端桥接
2
2
 
3
- > 该桥接仅限于开吧 app 内使用
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
- yarn:
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
- yarn add @kbapp/js-bridge
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
- pnpm:
44
+ ### 通过 script 标签引入的使用示例
20
45
 
21
46
  ```js
22
- pnpm add @kbapp/js-bridge
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
- import { saveImageToLocal, JSBridgeCode } from '@kbapp/js-bridge'
29
-
30
- defineComponents({
31
- /** 保存图片案例 */
32
- async saveImageHandle() {
33
- try {
34
- await saveImageToLocal({
35
- imageUrl: 'https://static.kaiba315.com.cn/kaiba-logo.png',
36
- })
37
- } catch (error) {
38
- switch (error.errCode) {
39
- case JSBridgeCode.UNSUPPORTED_VERSION:
40
- // 用户当前版本为支持该桥接,此时应当引导用户升级app
41
- // 用户同意后,可以调用 checkForNewVersion()或者前往应用商城
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
- ## Api
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
- | checkForNewVersion | 检测是否有新版本 |
59
- | closeWebView | 关闭当前 webview |
60
- | definePermissionUsage | 定义隐私权限协议文案 |
61
- | getDeviceInfo | 获取设备信息 |
62
- | openPostEditor | 唤起发帖器 |
63
- | runAction | 执行 action |
64
- | saveImageToLocal | 保存图片到本地 |
65
- | saveVideoToLocal | 保存视频到本地 |
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
- 没错, 的确要这么设计, 原因是为了解 如果点击了 2 个通过装饰器包装的按钮, 登陆成功后, 2 个按钮的回调事件将会全部执行(其实也有办法解决, 只是多点代码) 这种情况, 测试较真的话, 真是个问题
101
- 担心一个动作触发累计多个回调事件, 导致逻辑混乱
185
+ ### definePermissionUsage
102
186
 
103
- #### 如果是某个组件/页面加载的时候就得登录才能正常操作
187
+ > 定义隐私权限协议文案
104
188
 
105
- 暂时没想好, 反正也是需要禁止无限制事件类型, 小程序情况下, 某个链接点击打开小程序, 然后关闭, 再重新点链接打开小程序, 页面生命周期是重复触发 onMounted
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
- ### saveImageToLocal
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
- | imageUrl | string | 图片网络地址 |
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
- Promise<{ errCode: JSBridgeCode }>
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
- ### saveVideoToLocal
305
+ ### defineAppSharePanelState
134
306
 
135
- > 保存视频到本地
307
+ > 定义页面是否显示右上角分享菜单, 定义分享面板显示的相关状态
136
308
 
137
309
  #### 请求参数
138
310
 
139
- | 参数 | 值类型 | 必填? | 说明 |
140
- | -------- | ------ | ----- | ------------ |
141
- | videoUrl | string | 必填 | 视频网络地址 |
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
- Promise<{ errCode: JSBridgeCode }>
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
- ### defineShareModelState
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
- ### invokeShareModal
430
+ ### getAppBaseInfo
162
431
 
163
- > 唤起分享更多模态框
432
+ > 获取设备信息
164
433
 
165
434
  #### 请求参数
166
435
 
167
- | 参数 | 值类型 | 必填? | 说明 |
168
- | -------- | ------ | ----- | ------------------ |
169
- | title | string | 必填 | 分享的标题 |
170
- | content | string | 必填 | 分享的内容(副标题) |
171
- | url | string | 必填 | 分享的网页链接 |
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
- void
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
- ### sharePoster
468
+ ### openAppSharePanel
183
469
 
184
- > 分享图片
470
+ > 主动唤起分享面板
185
471
 
186
472
  #### 请求参数
187
473
 
188
- | 参数 | 值类型 | 必填? | 说明 |
189
- | -------- | ------ | ----- | ------------------------------------- |
190
- | imageUrl | string | 必填 | 分享的图片链接,仅支持网络地址,png/jpg |
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
- Promise<{ errCode: JSBridgeCode }>
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
- ### setWebViewTitle
513
+ ### openPostEditor
207
514
 
208
- > 设置网页标题(建议通过 document.title 设置)
515
+ > 唤起发帖器
209
516
 
210
517
  #### 请求参数
211
518
 
212
- | 参数 | 值类型 | 必填? | 说明 |
213
- | ----- | ------ | ----- | ---------------- |
214
- | title | string | 必填 | webview 标题文案 |
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<void>
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
- Promise<{ errCode: JSBridgeCode }>
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
- ### checkForNewVersion
575
+ ### onAppSharePanelShow
231
576
 
232
- > 检测是否有新版本可用, iOS 无论是否有最新版本都直接跳转到应用商店, 安卓如果有新版,则弹窗提示,没有的话 toast 提示无新版本
577
+ > 监听分享面板打开时触发(主动和被动)
233
578
 
234
579
  #### 请求参数
235
580
 
236
-
581
+ | 参数 | 类型 | 说明 |
582
+ | ---------- | ----------- | -------------------- |
583
+ | `callback` | `()=> void` | 分享面板打开时的回调 |
237
584
 
238
585
  #### 返回值
239
586
 
240
587
  ```js
241
- void
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
- ### canIUse
606
+ ### onAppLoginSuccess
247
607
 
248
- > 检测某个方法能被当前版本使用
608
+ > 登录完成会触发回调函数,调用该时将会立刻检测当前是否登录
249
609
 
250
610
  #### 请求参数
251
611
 
252
- 传入方法名(string)
612
+ | 参数 | 类型 | 说明 |
613
+ | ---------- | ----------------------------------------- | ------------ |
614
+ | `callback` | `(loginInfo: AppBridgedUserInfo) => void` | 登录成功回调 |
253
615
 
254
616
  #### 返回值
255
617
 
256
618
  ```js
257
- Promise<boolean>
619
+ // 返回函数,调用该函数,停止监听
620
+ () => void
258
621
  ```
259
622
 
260
- #### 示例
623
+ #### 示例代码
261
624
 
262
625
  ```js
263
- import { canIUse } from '@kbapp/js-bridge'
626
+ import { onAppLoginSuccess } from '@kbapp/js-bridge'
264
627
 
265
- if (await canIUse('sharePoster')) {
266
- console.log('当前app版本能使用')
267
- } else {
268
- console.log('请升级app')
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 | 必填 | action |
283
- | actionParams | string | 选填 | 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
- ### closeWebView
722
+ ### saveImageToLocal
292
723
 
293
- > 关闭当前 webview
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
- ### defineShareModel
767
+ ### saveVideoToLocal
306
768
 
307
- > 定义当前页面分享文案
769
+ > 保存视频到本地
308
770
 
309
771
  #### 请求参数
310
772
 
311
- | 参数 | 值类型 | 必填? | 说明 |
312
- | -------- | ------ | ----- | ---------- |
313
- | title | string | 必填 | 标题 |
314
- | content | string | 选填 | 内容 |
315
- | imageUrl | string | 必填 | 图片 |
316
- | url | string | 必填 | https 链接 |
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
- ### getAppLoginInfo
812
+ ### scanQRCode
327
813
 
328
- > 获取 app 登录信息.如果未登录返回 null
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<AppBridgedUserInfo | null>
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
- ### triggerAppLogin
849
+ ### setScreenOrientation
344
850
 
345
- > 唤起 app 登录. 如果已登录,将直接返回登录信息
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<AppBridgedUserInfo>
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
- ### watchAppLoginSuccess
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
- (loginInfo) => void
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
- () => void
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 { watchAppLoginSuccess } from '@kbapp/js-bridge'
973
+ import { shareImage } from '@kbapp/js-bridge'
381
974
 
382
- const handle = watchAppLoginSuccess(() => {
383
- console.log('登录成功')
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
- // handle() 停止监听
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
- Promise<{
1119
+ class AppBridgedUserInfo {
397
1120
  /** 车牌号:例如浙A999999 */
398
1121
  carNo?: string
1122
+
399
1123
  /** 未知 */
400
1124
  role?: number
1125
+
401
1126
  /** 手机号 */
402
- mobile: string
1127
+ mobile!: string
1128
+
403
1129
  /** 性别 */
404
- sex: number
1130
+ sex!: number
1131
+
405
1132
  /** 电台id */
406
- siteId: number
1133
+ siteId!: number
1134
+
407
1135
  /** 头像地址 */
408
- avatar: string
1136
+ avatar!: string
1137
+
409
1138
  /** token */
410
- token: string
1139
+ token!: string
1140
+
411
1141
  /** 用户id */
412
- userId: number
1142
+ userId!: number
1143
+
413
1144
  /** 用户名 */
414
- userName: string
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
- ### JSBridgeCode
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
- | key | value | 说明 |
428
- | ------------------- | ----- | ------------------------------------------------------ |
429
- | UNSUPPORTED_VERSION | 1001 | 用户当前 app 版本不支持该 桥接(此时请引导用户升级 app) |
430
- | UN_LOGIN | 1002 | APP 未登录 |
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