@docoi/mys-sdk 1.2.0 → 1.2.2
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/README.md +213 -212
- package/dist/api/basic.d.ts +164 -28
- package/dist/api/biz.d.ts +12 -3
- package/dist/api/router/index.d.ts +42 -0
- package/dist/api/router/routes.d.ts +0 -2
- package/dist/bridge.d.ts +2 -1
- package/dist/constants/code.d.ts +2 -0
- package/dist/index.mjs +864 -740
- package/dist/types/base.d.ts +18 -0
- package/dist/types/enums.d.ts +6 -0
- package/dist/types/params.d.ts +132 -6
- package/dist/types/results.d.ts +51 -4
- package/dist/types/router.d.ts +87 -10
- package/dist/utils/data.d.ts +12 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,212 +1,213 @@
|
|
|
1
|
-
# @docoi/mys-sdk
|
|
2
|
-
|
|
3
|
-
H5 与梦游社 App 原生通信的 SDK。封装 JSBridge,对外提供类微信小程序风格的 API:全部 Promise 化,同时兼容 `success` / `fail` / `complete` 回调。
|
|
4
|
-
|
|
5
|
-
- **类型完备** — 每个 API 都有类型声明与 JSDoc,IDE 里悬浮即可看到说明、最低可用版本和调用示例
|
|
6
|
-
- **新旧通道自动兼容** — App 4.4.0 前后的通信方式不同,由 SDK 按各 API 的起始版本在内部选择,业务侧不需要判断版本
|
|
7
|
-
- **零配置** — 不需要初始化,import 即用
|
|
8
|
-
|
|
9
|
-
## 安装
|
|
10
|
-
|
|
11
|
-
```bash
|
|
12
|
-
pnpm add @docoi/mys-sdk
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
## 快速开始
|
|
16
|
-
|
|
17
|
-
```ts
|
|
18
|
-
import mys from '@docoi/mys-sdk'
|
|
19
|
-
|
|
20
|
-
// 显示提示框
|
|
21
|
-
await mys.showToast({ text: '操作成功' })
|
|
22
|
-
|
|
23
|
-
// 获取系统信息
|
|
24
|
-
const { result } = await mys.getSystemInfo()
|
|
25
|
-
console.log(result.app_version, result.network_type)
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
## 引入方式
|
|
29
|
-
|
|
30
|
-
两种写法等价,指向同一份实现,按团队习惯选一种:
|
|
31
|
-
|
|
32
|
-
```ts
|
|
33
|
-
// 聚合对象
|
|
34
|
-
import mys from '@docoi/mys-sdk'
|
|
35
|
-
await mys.showToast({ text: 'hi' })
|
|
36
|
-
|
|
37
|
-
// 命名导入
|
|
38
|
-
import { showToast } from '@docoi/mys-sdk'
|
|
39
|
-
await showToast({ text: 'hi' })
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
## 返回值
|
|
43
|
-
|
|
44
|
-
所有 API 返回 `Promise<NativeResponse<TResult>>`,`code` 为 `0` 才算成功:
|
|
45
|
-
|
|
46
|
-
```ts
|
|
47
|
-
interface NativeResponse<TResult> {
|
|
48
|
-
code: number // 0 表示成功
|
|
49
|
-
msg: string // 成功时固定为 'ok'
|
|
50
|
-
result: TResult // 业务数据
|
|
51
|
-
}
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
```ts
|
|
55
|
-
const res = await mys.chooseMedia({ count: 3 })
|
|
56
|
-
console.log(res.result.tempFiles[0].tempFilePath)
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
## 错误处理
|
|
60
|
-
|
|
61
|
-
失败时 Promise reject,同时触发 `fail` 和 `complete` 回调,拿到的是 `ApiError`:
|
|
62
|
-
|
|
63
|
-
```ts
|
|
64
|
-
interface ApiError {
|
|
65
|
-
errCode: number
|
|
66
|
-
errMsg: string // 形如 `showToast:fail parameter error: text is required`
|
|
67
|
-
errDetail?: unknown // 排查用的原始数据,仅部分场景存在
|
|
68
|
-
}
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
```ts
|
|
72
|
-
try {
|
|
73
|
-
await mys.getClipboardData()
|
|
74
|
-
} catch (err) {
|
|
75
|
-
const { errCode, errMsg } = err as ApiError
|
|
76
|
-
console.error(errCode, errMsg)
|
|
77
|
-
}
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
`errCode` 语义如下,常量可从 `@docoi/mys-sdk` 的 `constants/code` 导入:
|
|
81
|
-
|
|
82
|
-
| 码 | 常量 | 含义 |
|
|
83
|
-
| ---- | ------------------ | ------------------------------------------------ |
|
|
84
|
-
| 0 | `SUCCESS` | 成功 |
|
|
85
|
-
| -1 | `SYSTEM_EXCEPTION` | 未知异常 |
|
|
86
|
-
| 1001 | `METHOD_NOT_FOUND` | App 没有这个方法 |
|
|
87
|
-
| 1002 | `PARAMS_ERROR` | 参数校验失败,SDK 前置判定,不会发起调用 |
|
|
88
|
-
| 2002 | `NOT_LOGGED_IN` | 未登录、Token 失效 |
|
|
89
|
-
|
|
|
90
|
-
|
|
|
91
|
-
|
|
|
92
|
-
|
|
|
93
|
-
|
|
|
94
|
-
|
|
|
95
|
-
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
})
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
|
151
|
-
|
|
|
152
|
-
|
|
|
153
|
-
|
|
|
154
|
-
|
|
|
155
|
-
|
|
|
156
|
-
|
|
|
157
|
-
|
|
|
158
|
-
|
|
|
159
|
-
|
|
|
160
|
-
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
-
|
|
186
|
-
-
|
|
187
|
-
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
import {
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
1
|
+
# @docoi/mys-sdk
|
|
2
|
+
|
|
3
|
+
H5 与梦游社 App 原生通信的 SDK。封装 JSBridge,对外提供类微信小程序风格的 API:全部 Promise 化,同时兼容 `success` / `fail` / `complete` 回调。
|
|
4
|
+
|
|
5
|
+
- **类型完备** — 每个 API 都有类型声明与 JSDoc,IDE 里悬浮即可看到说明、最低可用版本和调用示例
|
|
6
|
+
- **新旧通道自动兼容** — App 4.4.0 前后的通信方式不同,由 SDK 按各 API 的起始版本在内部选择,业务侧不需要判断版本
|
|
7
|
+
- **零配置** — 不需要初始化,import 即用
|
|
8
|
+
|
|
9
|
+
## 安装
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
pnpm add @docoi/mys-sdk
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## 快速开始
|
|
16
|
+
|
|
17
|
+
```ts
|
|
18
|
+
import mys from '@docoi/mys-sdk'
|
|
19
|
+
|
|
20
|
+
// 显示提示框
|
|
21
|
+
await mys.showToast({ text: '操作成功' })
|
|
22
|
+
|
|
23
|
+
// 获取系统信息
|
|
24
|
+
const { result } = await mys.getSystemInfo()
|
|
25
|
+
console.log(result.app_version, result.network_type)
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## 引入方式
|
|
29
|
+
|
|
30
|
+
两种写法等价,指向同一份实现,按团队习惯选一种:
|
|
31
|
+
|
|
32
|
+
```ts
|
|
33
|
+
// 聚合对象
|
|
34
|
+
import mys from '@docoi/mys-sdk'
|
|
35
|
+
await mys.showToast({ text: 'hi' })
|
|
36
|
+
|
|
37
|
+
// 命名导入
|
|
38
|
+
import { showToast } from '@docoi/mys-sdk'
|
|
39
|
+
await showToast({ text: 'hi' })
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## 返回值
|
|
43
|
+
|
|
44
|
+
所有 API 返回 `Promise<NativeResponse<TResult>>`,`code` 为 `0` 才算成功:
|
|
45
|
+
|
|
46
|
+
```ts
|
|
47
|
+
interface NativeResponse<TResult> {
|
|
48
|
+
code: number // 0 表示成功
|
|
49
|
+
msg: string // 成功时固定为 'ok'
|
|
50
|
+
result: TResult // 业务数据
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
```ts
|
|
55
|
+
const res = await mys.chooseMedia({ count: 3 })
|
|
56
|
+
console.log(res.result.tempFiles[0].tempFilePath)
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## 错误处理
|
|
60
|
+
|
|
61
|
+
失败时 Promise reject,同时触发 `fail` 和 `complete` 回调,拿到的是 `ApiError`:
|
|
62
|
+
|
|
63
|
+
```ts
|
|
64
|
+
interface ApiError {
|
|
65
|
+
errCode: number
|
|
66
|
+
errMsg: string // 形如 `showToast:fail parameter error: text is required`
|
|
67
|
+
errDetail?: unknown // 排查用的原始数据,仅部分场景存在
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
```ts
|
|
72
|
+
try {
|
|
73
|
+
await mys.getClipboardData()
|
|
74
|
+
} catch (err) {
|
|
75
|
+
const { errCode, errMsg } = err as ApiError
|
|
76
|
+
console.error(errCode, errMsg)
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
`errCode` 语义如下,常量可从 `@docoi/mys-sdk` 的 `constants/code` 导入:
|
|
81
|
+
|
|
82
|
+
| 码 | 常量 | 含义 |
|
|
83
|
+
| ---- | ------------------ | ------------------------------------------------ |
|
|
84
|
+
| 0 | `SUCCESS` | 成功 |
|
|
85
|
+
| -1 | `SYSTEM_EXCEPTION` | 未知异常 |
|
|
86
|
+
| 1001 | `METHOD_NOT_FOUND` | App 没有这个方法 |
|
|
87
|
+
| 1002 | `PARAMS_ERROR` | 参数校验失败,SDK 前置判定,不会发起调用 |
|
|
88
|
+
| 2002 | `NOT_LOGGED_IN` | 未登录、Token 失效 |
|
|
89
|
+
| 3001 | `UNAUTHORIZED` | 未授权的调用,没有通过 App 的安全校验 |
|
|
90
|
+
| 3002 | `PERMISSION_DENIED`| 权限被拒 |
|
|
91
|
+
| 4002 | `NETWORK_ERROR` | 网络异常 |
|
|
92
|
+
| 5001 | `BRIDGE_ERROR` | 通信链路不通:不在 App 内,或原生通道不存在 |
|
|
93
|
+
| 5002 | `ENV_UNSUPPORTED` | 当前 App 版本没有该能力,SDK 前置判定,不会发起调用 |
|
|
94
|
+
| 9002 | `CUSTOM` | 其他业务失败 |
|
|
95
|
+
| 9101 | `RECORD_BUSY` | 录音进行中,需要先调 `cancelRecordAudio` |
|
|
96
|
+
| 9102 | `RECORD_FAILED` | 录音失败 |
|
|
97
|
+
|
|
98
|
+
## 回调风格
|
|
99
|
+
|
|
100
|
+
所有 API 都接受 `success` / `fail` / `complete`,与 Promise 同时生效:
|
|
101
|
+
|
|
102
|
+
```ts
|
|
103
|
+
mys.getSystemInfo({
|
|
104
|
+
success(res) {
|
|
105
|
+
console.log(res.result.app_version)
|
|
106
|
+
},
|
|
107
|
+
fail(err) {
|
|
108
|
+
console.error(err.errMsg)
|
|
109
|
+
},
|
|
110
|
+
complete(res) {
|
|
111
|
+
console.log('调用结束')
|
|
112
|
+
},
|
|
113
|
+
})
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## 事件监听
|
|
117
|
+
|
|
118
|
+
监听类 API 用 `onXxx` 注册、`offXxx` 注销。回调直接收到原生事件的数据,不包装 `code` / `msg` / `result`:
|
|
119
|
+
|
|
120
|
+
```ts
|
|
121
|
+
mys.onKeyboardHeightChange((height) => {
|
|
122
|
+
console.log('键盘高度', height)
|
|
123
|
+
})
|
|
124
|
+
|
|
125
|
+
mys.offKeyboardHeightChange() // 不传参取消该事件下全部监听
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
只和某一次调用相关的事件,作为该次调用的参数传入,由 SDK 自动释放,不需要也不提供单独的 on/off:
|
|
129
|
+
|
|
130
|
+
```ts
|
|
131
|
+
await mys.shareWebCard({
|
|
132
|
+
title: '标题',
|
|
133
|
+
content: '内容',
|
|
134
|
+
icon: 'https://example.com/icon.png',
|
|
135
|
+
shareUrl: 'https://docoi.cc',
|
|
136
|
+
daokeUrl: 'daoke://page?type=5&h5Type=4&url=https://docoi.cc',
|
|
137
|
+
externalContent: '内容',
|
|
138
|
+
onShared: (res) => console.log('分享完成', res?.shareChannel),
|
|
139
|
+
})
|
|
140
|
+
|
|
141
|
+
await mys.startRecordAudio({
|
|
142
|
+
maxDuration: 60,
|
|
143
|
+
onProgress: ({ decibel }) => console.log('音量', decibel),
|
|
144
|
+
onEnd: ({ tempFilePath, duration, size }) => console.log(tempFilePath, duration, size),
|
|
145
|
+
})
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
## API 一览
|
|
149
|
+
|
|
150
|
+
| 分组 | API |
|
|
151
|
+
| ------------ | ---------------------------------------------------------------------------------------------------------- |
|
|
152
|
+
| UI 交互 | `showToast` `triggerVibrate` `stopVibrate` `hideKeyboard` `onKeyboardHeightChange` / `offKeyboardHeightChange` |
|
|
153
|
+
| 媒体能力 | `previewImage` `previewVideo` `chooseMedia` `uploadFiles` `saveImageToPhotosAlbum` `startRecordAudio` `stopRecordAudio` `cancelRecordAudio` |
|
|
154
|
+
| 设备能力 | `getSystemInfo` `setClipboardData` `getClipboardData` `checkPermission` `openPhoneSetting` |
|
|
155
|
+
| 应用与页面 | `openApp` `swipeBack` `showPageName` |
|
|
156
|
+
| 页面生命周期 | `h5Loaded` `getBeforeInfo` `setBeforeInfo` `onPageShow` / `offPageShow` `onPageVisible` / `offPageVisible` `onPageInvisible` / `offPageInvisible` |
|
|
157
|
+
| 页面跳转 | `switchTab` `navigateTo` `openWebview` `openInExternalBrowser` `closeWebView` `openScheme` |
|
|
158
|
+
| 账号与用户 | `login` `getToken` `getCurrentCircleInfo` |
|
|
159
|
+
| 内容与分享 | `shareWebCard` `shareImage` `openAddCustomEmoji` `openCommentPanel` `showLongVipDesDialog` `voteAction` `openFriendsList` |
|
|
160
|
+
| 业务场景 | `toBindGameRole` `bindGameRoleSuccess` `showAd` `updateData` `openGiftBag` `onMemberActivate` / `offMemberActivate` |
|
|
161
|
+
| 工具 | `setDebug` `registerNativeHandler` |
|
|
162
|
+
|
|
163
|
+
`getAppBaseInfo` / `isInApp` / `compareVersions` 用来读 App 环境信息,`ToastDuration` / `ShareType` 是枚举值。`onRoute` / `invokeDebug` 仅供仓库内的 Demo 调试,不承诺兼容,业务侧不要依赖。
|
|
164
|
+
|
|
165
|
+
## App 版本兼容
|
|
166
|
+
|
|
167
|
+
每个 API 的 JSDoc 里用 `@app` 标了最低可用版本。低于这个版本时:
|
|
168
|
+
|
|
169
|
+
- **有旧接口的**(如 `login`、`showToast`、`previewImage`)由 SDK 自动改走旧通道,业务侧无感知
|
|
170
|
+
- **没有旧接口的**(如 `chooseMedia`、`uploadFiles`、录音系列)直接以 `5002` 失败,不发起调用
|
|
171
|
+
|
|
172
|
+
所以调用前一般不需要自己判断版本;确实要分支时用 `compareVersions`,它把入参与当前 App 版本比较(注意正负号与直觉相反):
|
|
173
|
+
|
|
174
|
+
```ts
|
|
175
|
+
import { compareVersions } from '@docoi/mys-sdk'
|
|
176
|
+
|
|
177
|
+
// compareVersions('4.4.0'):当前 App 版本更高返回 1,相等返回 0,更低返回 -1
|
|
178
|
+
if (compareVersions('4.4.0') >= 0) {
|
|
179
|
+
await mys.uploadFiles({ files: ['mysFile://temp/xxx.png'] })
|
|
180
|
+
}
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## 运行环境
|
|
184
|
+
|
|
185
|
+
- 产物语法基线 **ES2018**(Safari 12 / Chrome 63)。构建链会转译的可以直接用;直接引 CDN 或老构建链不转译 `node_modules` 时,需要自行保证运行时支持该基线
|
|
186
|
+
- 必须在 App 的 WebView 内使用。浏览器里通信类 API 会以 `5001` 失败;页面跳转类会尝试唤起 App
|
|
187
|
+
- 只提供 ESM 产物,不提供 CommonJS
|
|
188
|
+
- 无第三方运行时依赖(`@docoi/jsbridge-sdk` 是唯一依赖)
|
|
189
|
+
|
|
190
|
+
## TypeScript
|
|
191
|
+
|
|
192
|
+
类型随包一起发布,参数和返回值都有提示:
|
|
193
|
+
|
|
194
|
+
```ts
|
|
195
|
+
import type { ShowToastParams, NativeResponse, ApiError } from '@docoi/mys-sdk'
|
|
196
|
+
import { ToastDuration, ShareType } from '@docoi/mys-sdk'
|
|
197
|
+
|
|
198
|
+
const params: ShowToastParams = { text: 'hi', duration: ToastDuration.Long }
|
|
199
|
+
|
|
200
|
+
await mys.shareWebCard({
|
|
201
|
+
// ...
|
|
202
|
+
shareTypes: [ShareType.RecentContacts, ShareType.External],
|
|
203
|
+
})
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
## 文档
|
|
207
|
+
|
|
208
|
+
- API 文档站(测试环境):<http://sdk-test.docoi.cc/mys-sdk/docs/>
|
|
209
|
+
- 仓库与 Demo:[mys-sdk monorepo](../../README.md)
|
|
210
|
+
|
|
211
|
+
## License
|
|
212
|
+
|
|
213
|
+
MIT
|
package/dist/api/basic.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { OpenAppParams, ShowPageNameParams, SwipeBackParams, SetBeforeInfoParams, OpenAppResult, BeforeInfoResult, PageEventCallback, ShowToastParams, PlayMediaParams, ChooseMediaParams, ChooseMediaResult, UploadFilesParams, UploadFilesResult, SaveImageToPhotosAlbumParams, StartRecordAudioParams, SetClipboardDataParams, GetClipboardDataResult, TriggerVibrateParams, Callbacks, NativeResponse, SystemInfoResult, OpenPhoneSettingParams, CheckPermissionParams, CheckPermissionResult, KeyboardHeightChangeCallback,
|
|
1
|
+
import { OpenAppParams, ShowPageNameParams, SwipeBackParams, SetBeforeInfoParams, OpenAppResult, BeforeInfoResult, PageEventCallback, ShowToastParams, PlayMediaParams, ChooseMediaParams, ChooseMediaResult, UploadFilesParams, UploadFilesResult, SaveImageToPhotosAlbumParams, StartRecordAudioParams, SetClipboardDataParams, GetClipboardDataResult, ScanCodeParams, ScanCodeResult, SetPullDownRefreshParams, PullDownRefreshCallback, SetNavigationBarTitleParams, SetNavigationBarColorParams, SetStatusBarStyleParams, SetStorageParams, GetStorageParams, GetStorageResult, RemoveStorageParams, TriggerVibrateParams, Callbacks, NativeResponse, SystemInfoResult, OpenPhoneSettingParams, CheckPermissionParams, CheckPermissionResult, KeyboardHeightChangeCallback, EventListenOptions } from '../types';
|
|
2
2
|
/**
|
|
3
3
|
* 显示消息提示框。
|
|
4
4
|
*
|
|
@@ -73,33 +73,6 @@ export declare function onKeyboardHeightChange(callback: KeyboardHeightChangeCal
|
|
|
73
73
|
* mys.offKeyboardHeightChange()
|
|
74
74
|
*/
|
|
75
75
|
export declare function offKeyboardHeightChange(callback?: KeyboardHeightChangeCallback): void;
|
|
76
|
-
/**
|
|
77
|
-
* 监听评论区面板状态变化,Native 评论区面板打开、关闭或状态变化时触发。
|
|
78
|
-
*
|
|
79
|
-
* @app 4.2.0
|
|
80
|
-
* @example
|
|
81
|
-
* mys.onCommentPanelChange((res) => {
|
|
82
|
-
* console.log('评论区面板状态:', res.visible, res.reason)
|
|
83
|
-
* })
|
|
84
|
-
*
|
|
85
|
-
* // 只监听一次
|
|
86
|
-
* mys.onCommentPanelChange((res) => {
|
|
87
|
-
* console.log('只监听一次:', res.visible, res.reason)
|
|
88
|
-
* }, { once: true })
|
|
89
|
-
*
|
|
90
|
-
* // 取消监听
|
|
91
|
-
* mys.offCommentPanelChange()
|
|
92
|
-
*/
|
|
93
|
-
export declare function onCommentPanelChange(callback: CommentPanelChangeCallback, options?: EventListenOptions): void;
|
|
94
|
-
/**
|
|
95
|
-
* 取消监听评论区面板状态变化。
|
|
96
|
-
*
|
|
97
|
-
* @param callback 要取消的监听函数,不传则取消全部评论区面板监听
|
|
98
|
-
* @app 4.2.0
|
|
99
|
-
* @example
|
|
100
|
-
* mys.offCommentPanelChange()
|
|
101
|
-
*/
|
|
102
|
-
export declare function offCommentPanelChange(callback?: CommentPanelChangeCallback): void;
|
|
103
76
|
/**
|
|
104
77
|
* 预览图片。
|
|
105
78
|
*
|
|
@@ -168,6 +141,21 @@ export declare function uploadFiles(params: UploadFilesParams): Promise<NativeRe
|
|
|
168
141
|
* await mys.saveImageToPhotosAlbum({ filePath: canvas.toDataURL('image/png') })
|
|
169
142
|
*/
|
|
170
143
|
export declare function saveImageToPhotosAlbum(params: SaveImageToPhotosAlbumParams): Promise<NativeResponse<void>>;
|
|
144
|
+
/**
|
|
145
|
+
* 调起相机扫描二维码或条形码,返回识别出的内容。
|
|
146
|
+
*
|
|
147
|
+
* @note 需要相机权限,未授权时返回 3002,可先用 checkPermission 检查,再用 openPhoneSetting 引导用户开启。
|
|
148
|
+
* @note 用户取消扫码不算失败,成功返回且 cancelled 为 true,此时 result 为空字符串。
|
|
149
|
+
* @note 有画面但识别不出内容时 reject,errMsg 带原因。
|
|
150
|
+
*
|
|
151
|
+
* @app 待定
|
|
152
|
+
* @example
|
|
153
|
+
* const res = await mys.scanCode({ scanType: ['qrCode'] })
|
|
154
|
+
* if (!res.result.cancelled) {
|
|
155
|
+
* console.log(res.result.result)
|
|
156
|
+
* }
|
|
157
|
+
*/
|
|
158
|
+
export declare function scanCode(params?: ScanCodeParams): Promise<NativeResponse<ScanCodeResult>>;
|
|
171
159
|
/**
|
|
172
160
|
* 开始录音,录音结果通过 onEnd 回调返回。
|
|
173
161
|
*
|
|
@@ -270,6 +258,52 @@ export declare function checkPermission(params: CheckPermissionParams): Promise<
|
|
|
270
258
|
* }
|
|
271
259
|
*/
|
|
272
260
|
export declare function openPhoneSetting(params: OpenPhoneSettingParams): Promise<NativeResponse<void>>;
|
|
261
|
+
/**
|
|
262
|
+
* 在 Native 存储里保存一个值,跨页面、跨 WebView 可读,App 卸载才清除。
|
|
263
|
+
*
|
|
264
|
+
* @note value 会序列化成 JSON 字符串后交给 Native,取回时还原成存入时的类型。
|
|
265
|
+
* @note undefined、函数、symbol 以及对象里的这些字段无法序列化,会被丢弃;顶层就是这些值时返回 1002。
|
|
266
|
+
* @note 每次读写都是一次 Native 往返,只适合存开关、上次选择这类少量状态,列表缓存等大块数据用 localStorage。
|
|
267
|
+
* @note 与 localStorage 互不相通:localStorage 随 WebView 回收丢失,且页面之间不共享。
|
|
268
|
+
*
|
|
269
|
+
* @app 待定
|
|
270
|
+
* @example
|
|
271
|
+
* await mys.setStorage({ key: 'bgm_enabled', value: true })
|
|
272
|
+
* await mys.setStorage({ key: 'last_choice', value: { id: 1, tags: ['a', 'b'] } })
|
|
273
|
+
*/
|
|
274
|
+
export declare function setStorage(params: SetStorageParams): Promise<NativeResponse<void>>;
|
|
275
|
+
/**
|
|
276
|
+
* 读取 setStorage 保存的值。
|
|
277
|
+
*
|
|
278
|
+
* @note 键不存在时成功返回,data 为 null。
|
|
279
|
+
* @note 取回的文本不是合法 JSON(不是通过 setStorage 写入)时 reject。
|
|
280
|
+
*
|
|
281
|
+
* @app 待定
|
|
282
|
+
* @example
|
|
283
|
+
* const res = await mys.getStorage({ key: 'last_choice' })
|
|
284
|
+
* console.log(res.result.data)
|
|
285
|
+
*/
|
|
286
|
+
export declare function getStorage(params: GetStorageParams): Promise<NativeResponse<GetStorageResult>>;
|
|
287
|
+
/**
|
|
288
|
+
* 删除 setStorage 保存的值。
|
|
289
|
+
*
|
|
290
|
+
* @note 键不存在时同样成功返回。
|
|
291
|
+
*
|
|
292
|
+
* @app 待定
|
|
293
|
+
* @example
|
|
294
|
+
* await mys.removeStorage({ key: 'last_choice' })
|
|
295
|
+
*/
|
|
296
|
+
export declare function removeStorage(params: RemoveStorageParams): Promise<NativeResponse<void>>;
|
|
297
|
+
/**
|
|
298
|
+
* 清空 setStorage 保存的全部值。
|
|
299
|
+
*
|
|
300
|
+
* @note 只清除 SDK 写入的数据,不影响 App 自己的存储。
|
|
301
|
+
*
|
|
302
|
+
* @app 待定
|
|
303
|
+
* @example
|
|
304
|
+
* await mys.clearStorage()
|
|
305
|
+
*/
|
|
306
|
+
export declare function clearStorage(params?: Callbacks): Promise<NativeResponse<void>>;
|
|
273
307
|
/**
|
|
274
308
|
* 打开指定包名的其他 App(如游戏),未安装时触发下载。
|
|
275
309
|
*
|
|
@@ -300,6 +334,108 @@ export declare function openApp(params?: OpenAppParams): Promise<NativeResponse<
|
|
|
300
334
|
* await mys.swipeBack({ enable: false })
|
|
301
335
|
*/
|
|
302
336
|
export declare function swipeBack(params: SwipeBackParams): Promise<NativeResponse<void>>;
|
|
337
|
+
/**
|
|
338
|
+
* 设置当前页面是否允许原生下拉刷新。
|
|
339
|
+
*
|
|
340
|
+
* @note 只控制手势是否可用,不会立即触发刷新;触发刷新用 startPullDownRefresh,刷新由 onPullDownRefresh 通知。
|
|
341
|
+
* @note 只作用于当前页面,页面关闭后失效。
|
|
342
|
+
*
|
|
343
|
+
* @app 待定
|
|
344
|
+
* @example
|
|
345
|
+
* await mys.setPullDownRefresh({ enabled: true })
|
|
346
|
+
*/
|
|
347
|
+
export declare function setPullDownRefresh(params?: SetPullDownRefreshParams): Promise<NativeResponse<void>>;
|
|
348
|
+
/**
|
|
349
|
+
* 主动触发一次下拉刷新,展示刷新动画并触发 onPullDownRefresh 的回调。
|
|
350
|
+
*
|
|
351
|
+
* @note 刷新完成后必须调用 stopPullDownRefresh,否则刷新动画不会收起。
|
|
352
|
+
*
|
|
353
|
+
* @app 待定
|
|
354
|
+
* @example
|
|
355
|
+
* await mys.startPullDownRefresh()
|
|
356
|
+
*/
|
|
357
|
+
export declare function startPullDownRefresh(params?: Callbacks): Promise<NativeResponse<void>>;
|
|
358
|
+
/**
|
|
359
|
+
* 停止下拉刷新,收起刷新动画。
|
|
360
|
+
*
|
|
361
|
+
* @note 没有进行中的刷新时同样成功返回。
|
|
362
|
+
*
|
|
363
|
+
* @app 待定
|
|
364
|
+
* @example
|
|
365
|
+
* await mys.stopPullDownRefresh()
|
|
366
|
+
*/
|
|
367
|
+
export declare function stopPullDownRefresh(params?: Callbacks): Promise<NativeResponse<void>>;
|
|
368
|
+
/**
|
|
369
|
+
* 监听下拉刷新,用户下拉或调用 startPullDownRefresh 时触发。
|
|
370
|
+
*
|
|
371
|
+
* @note 在回调里重新加载数据,完成后调用 stopPullDownRefresh 收起刷新动画。
|
|
372
|
+
*
|
|
373
|
+
* @app 待定
|
|
374
|
+
* @example
|
|
375
|
+
* mys.onPullDownRefresh(async () => {
|
|
376
|
+
* await reload()
|
|
377
|
+
* await mys.stopPullDownRefresh()
|
|
378
|
+
* })
|
|
379
|
+
*/
|
|
380
|
+
export declare function onPullDownRefresh(callback: PullDownRefreshCallback, options?: EventListenOptions): void;
|
|
381
|
+
/**
|
|
382
|
+
* 取消监听下拉刷新。
|
|
383
|
+
*
|
|
384
|
+
* @param callback 要取消的监听函数,不传则取消全部下拉刷新监听
|
|
385
|
+
* @app 待定
|
|
386
|
+
* @example
|
|
387
|
+
* mys.offPullDownRefresh()
|
|
388
|
+
*/
|
|
389
|
+
export declare function offPullDownRefresh(callback?: PullDownRefreshCallback): void;
|
|
390
|
+
/**
|
|
391
|
+
* 设置当前页面原生导航栏的标题。
|
|
392
|
+
*
|
|
393
|
+
* @note 只作用于当前页面,页面关闭后失效。
|
|
394
|
+
*
|
|
395
|
+
* @app 待定
|
|
396
|
+
* @example
|
|
397
|
+
* await mys.setNavigationBarTitle({ title: '活动详情' })
|
|
398
|
+
*/
|
|
399
|
+
export declare function setNavigationBarTitle(params: SetNavigationBarTitleParams): Promise<NativeResponse<void>>;
|
|
400
|
+
/**
|
|
401
|
+
* 设置当前页面原生导航栏的背景色,以及标题和按钮的颜色。
|
|
402
|
+
*
|
|
403
|
+
* @note 只作用于当前页面,页面关闭后失效。
|
|
404
|
+
*
|
|
405
|
+
* @app 待定
|
|
406
|
+
* @example
|
|
407
|
+
* await mys.setNavigationBarColor({ backgroundColor: '#1a1a2e', frontColor: 'white' })
|
|
408
|
+
*/
|
|
409
|
+
export declare function setNavigationBarColor(params: SetNavigationBarColorParams): Promise<NativeResponse<void>>;
|
|
410
|
+
/**
|
|
411
|
+
* 显示当前页面的原生导航栏。
|
|
412
|
+
*
|
|
413
|
+
* @app 待定
|
|
414
|
+
* @example
|
|
415
|
+
* await mys.showNavigationBar()
|
|
416
|
+
*/
|
|
417
|
+
export declare function showNavigationBar(params?: Callbacks): Promise<NativeResponse<void>>;
|
|
418
|
+
/**
|
|
419
|
+
* 隐藏当前页面的原生导航栏。
|
|
420
|
+
*
|
|
421
|
+
* @note 隐藏后不会自动恢复,需要时调用 showNavigationBar。
|
|
422
|
+
*
|
|
423
|
+
* @app 待定
|
|
424
|
+
* @example
|
|
425
|
+
* await mys.hideNavigationBar()
|
|
426
|
+
*/
|
|
427
|
+
export declare function hideNavigationBar(params?: Callbacks): Promise<NativeResponse<void>>;
|
|
428
|
+
/**
|
|
429
|
+
* 设置状态栏的文字颜色。
|
|
430
|
+
*
|
|
431
|
+
* @note 只改文字颜色,不改状态栏背景。
|
|
432
|
+
* @note 只作用于当前页面,页面关闭后失效。
|
|
433
|
+
*
|
|
434
|
+
* @app 待定
|
|
435
|
+
* @example
|
|
436
|
+
* await mys.setStatusBarStyle({ style: 'light' })
|
|
437
|
+
*/
|
|
438
|
+
export declare function setStatusBarStyle(params: SetStatusBarStyleParams): Promise<NativeResponse<void>>;
|
|
303
439
|
/**
|
|
304
440
|
* 告知 Native 当前 H5 页面的类型,用于 Native 侧的页面识别和埋点。
|
|
305
441
|
*
|