@heybox/hb-sdk 0.8.1 → 0.8.2-alpha.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/CHANGELOG.md +13 -0
- package/README.md +2 -2
- package/dist/cli-chunks/{build-DPe1Ycjd.cjs → build-bVThH3Z5.cjs} +4 -4
- package/dist/cli-chunks/{context-BSUhAv3Z.cjs → context-DpKqGnjp.cjs} +2 -2
- package/dist/cli-chunks/{create-CaiKrGnb.cjs → create-BWC2343y.cjs} +1 -1
- package/dist/cli-chunks/{dev-BG1o8Q-0.cjs → dev-t14YpHHY.cjs} +9 -9
- package/dist/cli-chunks/{doctor-DutO2P5H.cjs → doctor-BWkrE0Hj.cjs} +1 -1
- package/dist/cli-chunks/{index-CKIyipP9.cjs → index-CDtcZVWv.cjs} +15 -15
- package/dist/cli-chunks/{index-Bur0U2z1.cjs → index-D3FMcOZq.cjs} +2 -2
- package/dist/cli-chunks/{index.esm-BPlpP-O0.cjs → index.esm-BrJBaJWS.cjs} +7 -7
- package/dist/cli-chunks/{login-C1JlLEza.cjs → login-DRMl7nFH.cjs} +2 -2
- package/dist/cli-chunks/{project-vite-Bd0WzAqQ.cjs → project-vite-CXgdzIYw.cjs} +1 -1
- package/dist/cli-chunks/{remote-DTFEf3Dj.cjs → remote-ibQybNiM.cjs} +6 -6
- package/dist/cli-chunks/{runtime-permission-env-C2S34ldj.cjs → runtime-permission-env-DiTeD75Q.cjs} +576 -20
- package/dist/cli-chunks/{session-zXVkHuhY.cjs → session-CIoBspg-.cjs} +1 -1
- package/dist/cli-chunks/{skill-CCB3DyXk.cjs → skill-5labzuWk.cjs} +2 -2
- package/dist/cli-chunks/{version-0qwlEyZC.cjs → version-QiVEs76a.cjs} +1 -1
- package/dist/cli.cjs +1 -1
- package/dist/devtools/browser-dev-host/assets/browser-dev-host-DxzOkljJ.js +101 -0
- package/dist/devtools/browser-dev-host/assets/{desktop-app-launch-DOfl5YvO.js → desktop-app-launch-B4KsgItx.js} +1 -1
- package/dist/devtools/browser-dev-host/assets/{index-CFr28-0O.js → index-9Nb3XhtI.js} +3 -3
- package/dist/devtools/browser-dev-host/index.html +2 -2
- package/dist/index.cjs.js +948 -44
- package/dist/index.esm.js +948 -44
- package/dist/miniapp-publish.cjs.js +536 -30
- package/dist/miniapp-publish.esm.js +536 -30
- package/dist/protocol.cjs.js +807 -2
- package/dist/protocol.esm.js +807 -2
- package/dist/vite.cjs.js +184 -1
- package/dist/vite.esm.js +184 -1
- package/package.json +7 -7
- package/skill/references/api-root.md +192 -8
- package/skill/references/recipes.md +45 -7
- package/skill/skill.json +5 -5
- package/types/core/errors.d.ts +33 -9
- package/types/core/handshake-state.d.ts +32 -2
- package/types/core/singleton.d.ts +265 -6
- package/types/miniapp-manifest/bindings.d.ts +65 -0
- package/types/miniapp-manifest/schema.d.ts +136 -19
- package/types/miniapp-publish/index.d.ts +425 -29
- package/types/modules/auth/index.d.ts +159 -5
- package/types/modules/cloud/index.d.ts +514 -40
- package/types/modules/companion/index.d.ts +1518 -17
- package/types/modules/device/index.d.ts +140 -9
- package/types/modules/environment/index.d.ts +172 -4
- package/types/modules/files/types.d.ts +1396 -21
- package/types/modules/navigation/app-pages/types.d.ts +81 -24
- package/types/modules/navigation/index.d.ts +230 -7
- package/types/modules/network/index.d.ts +297 -26
- package/types/modules/share/copy-link.d.ts +35 -5
- package/types/modules/share/index.d.ts +210 -0
- package/types/modules/share/screenshot.d.ts +23 -5
- package/types/modules/share/show-share-menu.d.ts +18 -5
- package/types/modules/share/types.d.ts +148 -23
- package/types/modules/storage/index.d.ts +139 -9
- package/types/modules/ui/index.d.ts +249 -18
- package/types/modules/user/get-info.d.ts +29 -8
- package/types/modules/user/index.d.ts +157 -0
- package/types/modules/user/revoke-authorization.d.ts +26 -2
- package/types/modules/user/steam-game-list.d.ts +96 -15
- package/types/modules/viewport/index.d.ts +158 -22
- package/types/protocol/types.d.ts +19 -1
- package/types/vite/index.d.ts +159 -1
- package/dist/devtools/browser-dev-host/assets/browser-dev-host-pUcws1MK.js +0 -101
|
@@ -13,6 +13,40 @@ export interface MiniProgramShareModule {
|
|
|
13
13
|
/**
|
|
14
14
|
* 复制当前小程序的通用分享链接,并返回该链接。
|
|
15
15
|
*
|
|
16
|
+
* @param options - 可选配置;只接受本次链接需要携带的 `extra`。省略 `options` 或
|
|
17
|
+
* `options.extra` 时生成不带扩展数据的链接。
|
|
18
|
+
* @returns Host 完成剪贴板写入后 resolve 的完整分享链接;返回字符串与剪贴板内容一致。
|
|
19
|
+
* @throws {@link HbMiniProgramSDKError} 参数、`extra` 编码或小程序身份不合法时返回
|
|
20
|
+
* `INVALID_PARAMS`;未声明或未启用 `share` 权限时分别返回
|
|
21
|
+
* `PERMISSION_NOT_DECLARED` 或 `PERMISSION_DENIED`;当前 Host 未开放剪贴板能力时可返回
|
|
22
|
+
* `METHOD_FORBIDDEN` 或 `REQUEST_UNSUPPORTED`。握手、bridge 超时和其他 Host 写入失败会保留
|
|
23
|
+
* 对应错误码。
|
|
24
|
+
*
|
|
25
|
+
* @remarks
|
|
26
|
+
* 该方法生成当前小程序的固定通用落地页,不复制当前页面路径或 hash,也不继承启动 URL
|
|
27
|
+
* 中已有的 `extra`。显式传入的 `extra` 会按 {@link MiniProgramShareExtraValue} 约束编码为
|
|
28
|
+
* Base64URL 参数;接收方使用 {@link MiniProgramShareModule.getExtra | share.getExtra} 还原值。
|
|
29
|
+
*
|
|
30
|
+
* 该调用需要在 `package.json#heybox.permissions` 声明并启用 `share`,但不额外要求
|
|
31
|
+
* `clipboard` 权限或可信用户手势。它只写入系统剪贴板,不会打开分享面板或自动显示成功
|
|
32
|
+
* 提示;需要直接打开分享面板时使用
|
|
33
|
+
* {@link MiniProgramShareModule.showShareMenu | share.showShareMenu}。
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```ts
|
|
37
|
+
* import hbSDK from '@heybox/hb-sdk'
|
|
38
|
+
*
|
|
39
|
+
* const copiedUrl = await hbSDK.share.copyLink({
|
|
40
|
+
* extra: { page: 'ranking', season: 12 },
|
|
41
|
+
* })
|
|
42
|
+
*
|
|
43
|
+
* console.log('已复制分享链接', copiedUrl)
|
|
44
|
+
* ```
|
|
45
|
+
*
|
|
46
|
+
* @see {@link MiniProgramShareModule.getExtra | share.getExtra}
|
|
47
|
+
* @see {@link MiniProgramShareModule.showShareMenu | share.showShareMenu}
|
|
48
|
+
* @see {@link https://docs.xiaoheihe.cn/hb_sdk/guide/permissions | 权限声明}
|
|
49
|
+
*
|
|
16
50
|
* @since 0.7.4-alpha.5
|
|
17
51
|
* @hbPlatform android
|
|
18
52
|
* @hbPlatform ios
|
|
@@ -29,6 +63,46 @@ export interface MiniProgramShareModule {
|
|
|
29
63
|
/**
|
|
30
64
|
* 同步获取小程序启动时携带的分享扩展数据;没有有效数据时返回 `undefined`。
|
|
31
65
|
*
|
|
66
|
+
* @returns 启动 URL 中有效的 `extra` 解码值。`null`、`false`、`0` 和空字符串都是有效
|
|
67
|
+
* 返回值;只有 URL 或参数缺失、编码/MessagePack 非法、超出限制或值类型不受支持时才返回
|
|
68
|
+
* `undefined`。所有非法输入都会静默降级,不会抛出异常。
|
|
69
|
+
*
|
|
70
|
+
* @remarks
|
|
71
|
+
* 该方法无参数且同步返回。SDK 实例创建时会捕获一次启动 URL,后续调用始终解析这份快照;
|
|
72
|
+
* `history.pushState`、`history.replaceState`、hash 变化或页面内路由跳转不会改变结果。需要处理
|
|
73
|
+
* 新分享链接时,应让宿主以该链接重新启动小程序。
|
|
74
|
+
*
|
|
75
|
+
* 解码器只接受启动 URL 查询参数中的无填充 Base64URL `extra`,解码后的 MessagePack 最多
|
|
76
|
+
* 128 字节;值必须符合 {@link MiniProgramShareExtraValue},最多嵌套 8 层,单个数组或对象
|
|
77
|
+
* 最多 64 项。含 `+`、`/` 或填充 `=` 的标准 Base64、JSON 文本的 Base64、损坏的
|
|
78
|
+
* MessagePack、非有限数字和其他非 JSON-compatible 值均返回 `undefined`。
|
|
79
|
+
*
|
|
80
|
+
* `getExtra()` 完全在当前页面本地解析,不等待握手、不发起 bridge/Host 请求、不要求权限
|
|
81
|
+
* 声明或可信用户手势,即使 SDK 握手失败也可以调用。它不会读取此前调用
|
|
82
|
+
* {@link MiniProgramShareModule.copyLink | share.copyLink}、
|
|
83
|
+
* {@link MiniProgramShareModule.showShareMenu | share.showShareMenu} 或
|
|
84
|
+
* {@link MiniProgramShareModule.screenshot | share.screenshot} 的内存状态:只有本次启动 URL
|
|
85
|
+
* 中的 `extra` 是数据源。其中 `copyLink` 和 `showShareMenu` 可生成携带 `extra` 的通用分享
|
|
86
|
+
* 链接,`screenshot` 不会为 `getExtra()` 写入扩展数据。
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```ts
|
|
90
|
+
* import hbSDK from '@heybox/hb-sdk'
|
|
91
|
+
*
|
|
92
|
+
* const extra = hbSDK.share.getExtra()
|
|
93
|
+
*
|
|
94
|
+
* if (extra && typeof extra === 'object' && !Array.isArray(extra)) {
|
|
95
|
+
* const page = extra.page
|
|
96
|
+
* if (page === 'ranking') window.location.hash = '#/ranking'
|
|
97
|
+
* }
|
|
98
|
+
* ```
|
|
99
|
+
*
|
|
100
|
+
* @see {@link MiniProgramShareExtraValue}
|
|
101
|
+
* @see {@link MiniProgramShareModule.copyLink | share.copyLink}
|
|
102
|
+
* @see {@link MiniProgramShareModule.showShareMenu | share.showShareMenu}
|
|
103
|
+
* @see {@link MiniProgramShareModule.screenshot | share.screenshot}
|
|
104
|
+
* @see {@link https://docs.xiaoheihe.cn/hb_sdk/recipes/community-share | 社区分享预置}
|
|
105
|
+
*
|
|
32
106
|
* @since 0.7.4-alpha.5
|
|
33
107
|
* @hbPlatform android
|
|
34
108
|
* @hbPlatform ios
|
|
@@ -45,6 +119,76 @@ export interface MiniProgramShareModule {
|
|
|
45
119
|
/**
|
|
46
120
|
* 展示以当前小程序通用分享页为落地页的基础分享面板。
|
|
47
121
|
*
|
|
122
|
+
* @param options - 必填标题、描述,以及可选缩略图、渠道、扩展数据和社区发帖预置;每个
|
|
123
|
+
* 字段的规范化与降级规则见 {@link MiniProgramShowShareMenuOptions}。
|
|
124
|
+
* @returns Host 分享面板返回的 `unknown` 不透明值。平台和客户端版本可能返回 `undefined`
|
|
125
|
+
* 或不同对象,不能依赖字段或用真假值判断用户是否完成、取消或成功发布。
|
|
126
|
+
* @throws {@link HbMiniProgramSDKError} `INVALID_PARAMS` 表示参数不是对象,`title` / `desc`
|
|
127
|
+
* trim 后为空,出现自定义 `url`,`imageUrl` 不是 HTTP(S),`channel` 不在公开枚举内,
|
|
128
|
+
* `extra` 超出编码限制,缺少 canonical 小程序身份/有效当前 URL,或开发态 `post` 无效、
|
|
129
|
+
* 超过一个分区、与 `channel` 冲突。
|
|
130
|
+
* @throws {@link HbMiniProgramSDKError} `PERMISSION_NOT_DECLARED` / `PERMISSION_DENIED` 表示
|
|
131
|
+
* `share` 权限未声明或未启用;`METHOD_FORBIDDEN` / `METHOD_NOT_FOUND` 表示当前 Host 未开放
|
|
132
|
+
* 分享面板;`REQUEST_UNSUPPORTED` 表示 Host 不支持当前分享参数或渠道。
|
|
133
|
+
* @throws {@link HbMiniProgramSDKError} `RUNTIME_DESTROYED` / `RUNTIME_UNAVAILABLE` /
|
|
134
|
+
* `SDK_DESTROYED` 表示 Runtime、容器或 SDK 已进入终态。SDK 握手失败或 Host 面板调用超时
|
|
135
|
+
* 时,还会返回对应握手错误码或 `REQUEST_TIMEOUT`;其他 Host 分享错误保留其 SDK 错误码。
|
|
136
|
+
*
|
|
137
|
+
* @remarks
|
|
138
|
+
* Runtime 使用 Host 确认的 canonical 小程序 ID 构造固定通用落地页,并按可用情况附带当前
|
|
139
|
+
* 小程序版本、启动 URL 的 `h_src` 和本次显式传入的 `extra`。不能传自定义 `url`,也不会
|
|
140
|
+
* 继承当前启动 URL 中已有的 `extra`。接收方新启动小程序后用
|
|
141
|
+
* {@link MiniProgramShareModule.getExtra | share.getExtra} 同步读取该值。
|
|
142
|
+
*
|
|
143
|
+
* `channel` 用于站外渠道,`post` 用于社区发帖页预置,两者不要同时配置。`post.topicIds`
|
|
144
|
+
* 会转换为字符串、trim、去重,普通分享最多保留第一项;`post.topics` 会 trim、拒绝首尾
|
|
145
|
+
* `#` 并去重。开发 Runtime 对任一无效项或冲突返回 `INVALID_PARAMS`;生产 Runtime 会过滤
|
|
146
|
+
* 无效项,在冲突时保留 `channel`、省略 `post`,继续打开基础面板。社区预置只填充可编辑
|
|
147
|
+
* 发帖页,用户仍可修改或取消,SDK 不能直接发布内容。
|
|
148
|
+
*
|
|
149
|
+
* 该方法需要声明并启用 `share`,但不额外要求 `network`、`clipboard` 权限或可信用户手势;
|
|
150
|
+
* 分享面板内仍由用户完成最终确认。移动端 Host 支持分享面板;当前新 PC Host 未开放,
|
|
151
|
+
* Windows/macOS 调用应处理 `METHOD_FORBIDDEN`。Browser Dev Host 的确认弹窗只用于开发模拟。
|
|
152
|
+
*
|
|
153
|
+
* `showShareMenu` 不截图,也不会隐藏小程序导航栏或其他 Host chrome。需要把当前画面交给
|
|
154
|
+
* 分享流程时使用 {@link MiniProgramShareModule.screenshot | share.screenshot};后者会在
|
|
155
|
+
* capture 前临时隐藏截图 chrome,并在结束后尽力恢复。只需复制同一固定落地链接时使用
|
|
156
|
+
* {@link MiniProgramShareModule.copyLink | share.copyLink}。
|
|
157
|
+
*
|
|
158
|
+
* @example
|
|
159
|
+
* ```ts
|
|
160
|
+
* import hbSDK from '@heybox/hb-sdk'
|
|
161
|
+
*
|
|
162
|
+
* async function shareToWechat() {
|
|
163
|
+
* await hbSDK.share.showShareMenu({
|
|
164
|
+
* title: '本周战绩',
|
|
165
|
+
* desc: '查看我的最新战绩',
|
|
166
|
+
* imageUrl: 'https://cdn.example.com/share/weekly.png',
|
|
167
|
+
* channel: 'wechatSession',
|
|
168
|
+
* extra: { tab: 'weekly' },
|
|
169
|
+
* })
|
|
170
|
+
* }
|
|
171
|
+
*
|
|
172
|
+
* async function shareToCommunity() {
|
|
173
|
+
* await hbSDK.share.showShareMenu({
|
|
174
|
+
* title: '本周战绩',
|
|
175
|
+
* desc: '查看我的最新战绩',
|
|
176
|
+
* post: {
|
|
177
|
+
* topicIds: [235709],
|
|
178
|
+
* topics: ['无畏契约战绩'],
|
|
179
|
+
* },
|
|
180
|
+
* })
|
|
181
|
+
* }
|
|
182
|
+
* ```
|
|
183
|
+
*
|
|
184
|
+
* @see {@link MiniProgramShowShareMenuOptions}
|
|
185
|
+
* @see {@link MiniProgramSharePostOptions}
|
|
186
|
+
* @see {@link MiniProgramShareModule.copyLink | share.copyLink}
|
|
187
|
+
* @see {@link MiniProgramShareModule.screenshot | share.screenshot}
|
|
188
|
+
* @see {@link MiniProgramShareModule.getExtra | share.getExtra}
|
|
189
|
+
* @see [社区分享预置](/recipes/community-share)
|
|
190
|
+
* @see [权限声明](/guide/permissions)
|
|
191
|
+
*
|
|
48
192
|
* @since 0.2.0-alpha.0
|
|
49
193
|
* @hbPlatform android
|
|
50
194
|
* @hbPlatform ios
|
|
@@ -61,6 +205,71 @@ export interface MiniProgramShareModule {
|
|
|
61
205
|
/**
|
|
62
206
|
* 截图并唤起分享。
|
|
63
207
|
*
|
|
208
|
+
* @param options - 可选截图配置。省略时使用调用时的整个可见窗口;字段约束见
|
|
209
|
+
* {@link MiniProgramScreenshotOptions}。
|
|
210
|
+
* @returns Host 截图分享流程返回的 `unknown` 不透明值。不同平台和客户端版本可能返回
|
|
211
|
+
* `undefined` 或不同对象,不能依赖字段或用真假值判断分享成功。
|
|
212
|
+
* @throws {@link HbMiniProgramSDKError} `options` 是数组或非对象值(省略值和运行时 `null`
|
|
213
|
+
* 除外),`rect` 不是对象或其坐标、尺寸经 `Number(...)` 转换后不是有效范围,`delay`
|
|
214
|
+
* 转换后不是非负有限数,
|
|
215
|
+
* `saveToAlbum` 不是布尔值,或开发 Runtime 中 `post` 含无效项时以 `INVALID_PARAMS`
|
|
216
|
+
* 拒绝。未声明或未启用 `share` 权限时分别以
|
|
217
|
+
* `PERMISSION_NOT_DECLARED`、`PERMISSION_DENIED` 拒绝;当前 Host 未开放截图能力时以
|
|
218
|
+
* `METHOD_FORBIDDEN` 拒绝,不支持请求形状时可能以 `REQUEST_UNSUPPORTED` 拒绝。握手失败、
|
|
219
|
+
* SDK/Runtime 已销毁、bridge 超时或 Host 截图失败时抛出对应 SDK 错误。用户取消由
|
|
220
|
+
* Host 决定返回不透明结果还是错误,不能依赖统一形态。
|
|
221
|
+
*
|
|
222
|
+
* @remarks
|
|
223
|
+
* `rect` 使用与 {@link MiniProgramViewportModule.getWindowInfo | viewport.getWindowInfo}
|
|
224
|
+
* 相同的当前窗口逻辑像素坐标;省略时 Runtime 在调用时读取窗口,构造从 `(0, 0)` 到
|
|
225
|
+
* `windowWidth × windowHeight` 的矩形。Runtime 校验有限数和正负范围,但不取整、不按
|
|
226
|
+
* `pixelRatio` 换算,也不把越界矩形夹取到窗口内。JavaScript 的 coercible 非 number 值可能被
|
|
227
|
+
* 当前 Runtime 接受,但这不是 TypeScript 公共合同,不应依赖。
|
|
228
|
+
*
|
|
229
|
+
* `delay` 省略时由 Host 使用默认延迟;`saveToAlbum` 省略时由 Host 决定是否提供相册
|
|
230
|
+
* 入口。`post` 会对分区 ID 和话题 trim、规范化及去重。截图分享允许多个分区;开发
|
|
231
|
+
* Runtime 对任一无效项返回 `INVALID_PARAMS`,生产 Runtime 过滤无效项,并在没有有效项
|
|
232
|
+
* 时省略 `post` 后继续截图。社区预置只填充可编辑的发帖页,不会自动发布。
|
|
233
|
+
*
|
|
234
|
+
* Runtime 在截图前请求隐藏可能进入成图的 Host 顶部视觉外壳(例如开发者入口),并在
|
|
235
|
+
* Host 成功、失败或 Runtime 终止后都尝试恢复。恢复是 best-effort:非终止场景下的恢复
|
|
236
|
+
* 失败不会覆盖原始截图结果或错误;具体隐藏范围由 Host 决定,这不代表 Mini-program
|
|
237
|
+
* 自己的 DOM 会被隐藏。
|
|
238
|
+
*
|
|
239
|
+
* 该调用需要在 `package.json#heybox.permissions` 声明并启用 `share`,但不要求可信用户
|
|
240
|
+
* 手势。Android、iOS、OHOS 的移动 Host 已实现真实截图分享;当前新 PC Host 在 Windows
|
|
241
|
+
* 和 macOS 上禁用该能力,应处理 `METHOD_FORBIDDEN`。Browser Dev Host 只展示参数确认,
|
|
242
|
+
* 不读取页面像素,也不能替代真机验收。
|
|
243
|
+
*
|
|
244
|
+
* 与 {@link MiniProgramShareModule.showShareMenu | share.showShareMenu} 相比,本方法分享
|
|
245
|
+
* 截图且不接收标题、描述、`channel` 或 `extra`;需要通用分享落地页或让接收方通过
|
|
246
|
+
* {@link MiniProgramShareModule.getExtra | share.getExtra} 恢复状态时,应使用
|
|
247
|
+
* `showShareMenu()`。
|
|
248
|
+
*
|
|
249
|
+
* @example
|
|
250
|
+
* ```ts
|
|
251
|
+
* import hbSDK from '@heybox/hb-sdk'
|
|
252
|
+
*
|
|
253
|
+
* const { windowWidth, windowHeight } = await hbSDK.viewport.getWindowInfo()
|
|
254
|
+
*
|
|
255
|
+
* await hbSDK.share.screenshot({
|
|
256
|
+
* rect: { left: 0, top: 0, width: windowWidth, height: windowHeight },
|
|
257
|
+
* delay: 100,
|
|
258
|
+
* saveToAlbum: true,
|
|
259
|
+
* post: {
|
|
260
|
+
* topicIds: [235709, '66739'],
|
|
261
|
+
* topics: ['无畏契约战绩'],
|
|
262
|
+
* },
|
|
263
|
+
* })
|
|
264
|
+
* ```
|
|
265
|
+
*
|
|
266
|
+
* @see {@link MiniProgramScreenshotOptions}
|
|
267
|
+
* @see {@link MiniProgramScreenshotRect}
|
|
268
|
+
* @see {@link MiniProgramShareModule.showShareMenu | share.showShareMenu}
|
|
269
|
+
* @see {@link MiniProgramViewportModule.getWindowInfo | viewport.getWindowInfo}
|
|
270
|
+
* @see {@link https://docs.xiaoheihe.cn/hb_sdk/recipes/community-share | 社区分享预置}
|
|
271
|
+
* @see {@link https://docs.xiaoheihe.cn/hb_sdk/guide/permissions | 权限声明}
|
|
272
|
+
*
|
|
64
273
|
* @since 0.2.0-alpha.0
|
|
65
274
|
* @hbPlatform android
|
|
66
275
|
* @hbPlatform ios
|
|
@@ -79,6 +288,7 @@ export interface MiniProgramShareModule {
|
|
|
79
288
|
* 创建分享模块。
|
|
80
289
|
*
|
|
81
290
|
* @param requester - 底层 bridge 请求能力。
|
|
291
|
+
* @param launchHref - 可选的小程序启动 URL;`getExtra()` 从这里同步解析分享扩展数据。
|
|
82
292
|
* @returns 面向业务层的分享模块对象。
|
|
83
293
|
*/
|
|
84
294
|
export declare function createShareModule(requester: MiniProgramRequester, launchHref?: string): MiniProgramShareModule;
|
|
@@ -1,16 +1,34 @@
|
|
|
1
1
|
import type { MiniProgramRequester } from '../../core/client';
|
|
2
2
|
import type { MiniProgramScreenshotOptions } from './types';
|
|
3
3
|
export { SHARE_SCREENSHOT_METHOD } from '../../protocol/capabilities';
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* `share.screenshot` 的可选入参;省略时截取调用时的当前可见窗口。
|
|
6
|
+
*
|
|
7
|
+
* @see {@link MiniProgramScreenshotOptions}
|
|
8
|
+
*/
|
|
5
9
|
export type ScreenshotPayload = MiniProgramScreenshotOptions | undefined;
|
|
6
|
-
/**
|
|
10
|
+
/**
|
|
11
|
+
* `share.screenshot` 透传的 Host 截图分享结果。
|
|
12
|
+
*
|
|
13
|
+
* @remarks
|
|
14
|
+
* 结果类型刻意为 `unknown`:不同平台、客户端版本以及用户完成或取消分享时可能返回
|
|
15
|
+
* `undefined` 或不同对象。调用方不得依赖字段、用真假值判断分享成功,或把该值持久化
|
|
16
|
+
* 为跨版本协议。
|
|
17
|
+
*/
|
|
7
18
|
export type ScreenshotResult = unknown;
|
|
8
19
|
/**
|
|
9
20
|
* 截图并唤起分享。
|
|
10
21
|
*
|
|
11
22
|
* @param requester - 底层 bridge 请求能力。
|
|
12
|
-
* @param options -
|
|
13
|
-
* @returns
|
|
14
|
-
* @throws {@link HbMiniProgramSDKError}
|
|
23
|
+
* @param options - 可选截图配置;省略时截取当前可见窗口。
|
|
24
|
+
* @returns Host 返回的不透明截图分享结果;不要依赖其具体结构。
|
|
25
|
+
* @throws {@link HbMiniProgramSDKError} 参数、权限、bridge、Runtime 或 Host 截图能力失败时抛出。
|
|
26
|
+
*
|
|
27
|
+
* @remarks
|
|
28
|
+
* 公开业务代码通常通过 {@link MiniProgramShareModule.screenshot | share.screenshot} 调用;
|
|
29
|
+
* 完整参数、平台和恢复语义见该方法。
|
|
30
|
+
*
|
|
31
|
+
* @see {@link MiniProgramShareModule.screenshot | share.screenshot}
|
|
32
|
+
* @see {@link MiniProgramScreenshotOptions}
|
|
15
33
|
*/
|
|
16
34
|
export declare function screenshot(requester: MiniProgramRequester, options?: MiniProgramScreenshotOptions): Promise<ScreenshotResult>;
|
|
@@ -1,16 +1,29 @@
|
|
|
1
1
|
import type { MiniProgramRequester } from '../../core/client';
|
|
2
2
|
import type { MiniProgramShowShareMenuOptions } from './types';
|
|
3
3
|
export { SHARE_SHOW_SHARE_MENU_METHOD } from '../../protocol/capabilities';
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* `share.showShareMenu` 入参;落地页固定为当前小程序的通用分享页。
|
|
6
|
+
*
|
|
7
|
+
* @see [share.showShareMenu](/reference/sdk/share/showShareMenu)
|
|
8
|
+
*/
|
|
5
9
|
export type ShowShareMenuPayload = MiniProgramShowShareMenuOptions;
|
|
6
|
-
/**
|
|
10
|
+
/**
|
|
11
|
+
* 客户端分享面板返回的不透明值。
|
|
12
|
+
*
|
|
13
|
+
* @remarks
|
|
14
|
+
* Host 可能返回 `undefined` 或任意对象,不同平台和版本没有稳定字段。不能用结构或真假值判断
|
|
15
|
+
* 用户是否完成、取消或成功发布;只在 Promise rejection 时按公开错误码处理失败。
|
|
16
|
+
*/
|
|
7
17
|
export type ShowShareMenuResult = unknown;
|
|
8
18
|
/**
|
|
9
19
|
* 展示以当前小程序通用分享页为落地页的基础分享面板。
|
|
10
20
|
*
|
|
11
21
|
* @param requester - 底层 bridge 请求能力。
|
|
12
|
-
* @param options -
|
|
13
|
-
* @returns
|
|
14
|
-
* @throws {@link HbMiniProgramSDKError}
|
|
22
|
+
* @param options - 标题、描述,以及可选缩略图、渠道、扩展数据和社区发帖预置。
|
|
23
|
+
* @returns Host 分享面板返回的 `unknown` 不透明值;不能依赖字段或真假值判断分享结果。
|
|
24
|
+
* @throws {@link HbMiniProgramSDKError} 参数、固定落地页身份、`extra` 或开发态 `post` 校验失败
|
|
25
|
+
* 时返回 `INVALID_PARAMS`;权限、Host 能力及生命周期错误见公开模块方法文档。
|
|
26
|
+
* @remarks 不支持自定义 `url`、宿主回调或直接发布;社区预置仍由用户在客户端修改确认。
|
|
27
|
+
* @see [share.showShareMenu](/reference/sdk/share/showShareMenu)
|
|
15
28
|
*/
|
|
16
29
|
export declare function showShareMenu(requester: MiniProgramRequester, options: ShowShareMenuPayload): Promise<ShowShareMenuResult>;
|
|
@@ -2,59 +2,145 @@
|
|
|
2
2
|
* 小程序可选分享渠道。
|
|
3
3
|
*
|
|
4
4
|
* @remarks
|
|
5
|
-
*
|
|
5
|
+
* `wechatSession` / `wechatTimeline` / `qqFriend` / `qzone` / `weibo` 分别表示微信好友、
|
|
6
|
+
* 微信朋友圈、QQ 好友、QQ 空间和微博。值区分大小写;Host 可以只支持其中一部分。
|
|
7
|
+
* `share.showShareMenu()` 省略 `channel` 时由客户端展示默认分享面板;指定 `channel` 时不能
|
|
8
|
+
* 同时配置有效的社区 `post` 预置。
|
|
6
9
|
*/
|
|
7
10
|
export type MiniProgramShareChannel = 'wechatSession' | 'wechatTimeline' | 'qqFriend' | 'qzone' | 'weibo';
|
|
8
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* 分享扩展数据支持的 JSON-compatible 类型。
|
|
13
|
+
*
|
|
14
|
+
* @remarks
|
|
15
|
+
* 只允许 `null`、有限数字、字符串、布尔值、数组和普通对象;`undefined`、`NaN`、
|
|
16
|
+
* `Infinity`、`bigint`、`symbol`、函数、循环引用、`Date`、`Map` 和其他 class 实例均不受支持。
|
|
17
|
+
* 合法的 `null`、`false`、`0` 与空字符串在 {@link MiniProgramShareModule.getExtra | share.getExtra}
|
|
18
|
+
* 中会原样返回,不能用真假值判断是否存在分享数据。
|
|
19
|
+
*
|
|
20
|
+
* 编码后的 MessagePack 最多 8 层嵌套,单个数组或对象最多 64 项,总容量不超过 128 字节;
|
|
21
|
+
* 超限时分享 API 返回 `INVALID_PARAMS`,接收端 `getExtra()` 则对非法启动参数返回 `undefined`。
|
|
22
|
+
* 不要把 token、cookie、个人信息或其他敏感数据放入分享 URL。
|
|
23
|
+
*/
|
|
9
24
|
export type MiniProgramShareExtraValue = null | boolean | number | string | readonly MiniProgramShareExtraValue[] | {
|
|
10
25
|
readonly [key: string]: MiniProgramShareExtraValue;
|
|
11
26
|
};
|
|
12
|
-
/**
|
|
27
|
+
/**
|
|
28
|
+
* 复制当前小程序通用分享链接的配置。
|
|
29
|
+
*
|
|
30
|
+
* @remarks 该配置不能自定义落地 URL;省略整个配置等同于省略 `extra`。
|
|
31
|
+
*/
|
|
13
32
|
export interface MiniProgramCopyLinkOptions {
|
|
14
|
-
/**
|
|
33
|
+
/**
|
|
34
|
+
* 随本次分享链接携带、供接收方通过
|
|
35
|
+
* {@link MiniProgramShareModule.getExtra | share.getExtra} 读取的业务状态。
|
|
36
|
+
*
|
|
37
|
+
* @remarks
|
|
38
|
+
* 值域只允许 `null`、有限数字、字符串、布尔值、数组和普通对象。`undefined`、`NaN`、
|
|
39
|
+
* `Infinity`、`bigint`、`symbol`、函数、循环引用、`Date`、`Map` 及其他 class 实例都会以
|
|
40
|
+
* `INVALID_PARAMS` 拒绝。
|
|
41
|
+
*
|
|
42
|
+
* 最多嵌套 8 层,每个数组最多 64 项,每个对象最多 64 个字段。容量按 MessagePack
|
|
43
|
+
* 编码后的字节数计算,必须不超过 128 字节;不是按 `JSON.stringify` 后的字符数计算。
|
|
44
|
+
* Runtime 会再把字节编码为无填充 Base64URL 参数,调用方不要预先 JSON 序列化、Base64
|
|
45
|
+
* 编码或拼接 URL。省略该字段时,链接不携带 `extra`,也不会继承当前启动链接中的值。
|
|
46
|
+
*
|
|
47
|
+
* 不要在分享 URL 中放入 token、cookie、个人信息或其他敏感数据。
|
|
48
|
+
*
|
|
49
|
+
* @see {@link MiniProgramShareExtraValue}
|
|
50
|
+
* @see {@link MiniProgramShareModule.showShareMenu | share.showShareMenu}
|
|
51
|
+
*/
|
|
15
52
|
extra?: MiniProgramShareExtraValue;
|
|
16
53
|
}
|
|
17
|
-
/**
|
|
54
|
+
/**
|
|
55
|
+
* 客户端“转发到社区”发帖页的可编辑预置。
|
|
56
|
+
*
|
|
57
|
+
* @remarks
|
|
58
|
+
* 预置只填充客户端发帖页,用户仍可修改或取消,不会由 SDK 直接发布。`showShareMenu` 最多
|
|
59
|
+
* 保留一个分区,`screenshot` 可保留多个分区;两者都会按首次出现顺序去重。
|
|
60
|
+
*
|
|
61
|
+
* 开发 Runtime 对任一无效项返回 `INVALID_PARAMS`,生产 Runtime 则过滤无效项;过滤后没有
|
|
62
|
+
* 任何有效分区或话题时省略整个 `post`,但继续原分享流程。
|
|
63
|
+
*
|
|
64
|
+
* @see [社区分享预置](/recipes/community-share)
|
|
65
|
+
*/
|
|
18
66
|
export interface MiniProgramSharePostOptions {
|
|
19
|
-
/**
|
|
67
|
+
/**
|
|
68
|
+
* 默认发布分区 ID。number 必须是正安全整数并转换为字符串;string 会 trim 且必须非空。
|
|
69
|
+
* 规范化后按首次出现顺序去重,普通分享最多保留第一项,截图分享可保留多项。
|
|
70
|
+
*/
|
|
20
71
|
topicIds?: (string | number)[];
|
|
21
|
-
/**
|
|
72
|
+
/**
|
|
73
|
+
* 预置话题正文。每项必须是 string,trim 后非空且不能以 `#` 开头或结尾;规范化后按首次
|
|
74
|
+
* 出现顺序去重。传正文即可,不要自行包裹 `#`。
|
|
75
|
+
*/
|
|
22
76
|
topics?: string[];
|
|
23
77
|
}
|
|
24
78
|
/**
|
|
25
79
|
* 展示基础分享面板的配置。
|
|
26
80
|
*
|
|
27
81
|
* @remarks
|
|
28
|
-
*
|
|
82
|
+
* 分享落地页固定为当前小程序的通用分享页。该配置只暴露基础分享字段,不暴露宿主内部
|
|
83
|
+
* 上报、回调、自定义按钮、直接发布等协议参数。`url` 即使值为 `undefined` 也不允许出现;
|
|
84
|
+
* 其他未知字段不会传给 Host。
|
|
29
85
|
*/
|
|
30
86
|
export interface MiniProgramShowShareMenuOptions {
|
|
31
|
-
/**
|
|
87
|
+
/** 分享标题;必须是 trim 后非空的字符串,前后空白不会被 SDK 改写。 */
|
|
32
88
|
title: string;
|
|
33
|
-
/**
|
|
89
|
+
/** 分享描述;必须是 trim 后非空的字符串,前后空白不会被 SDK 改写。 */
|
|
34
90
|
desc: string;
|
|
35
|
-
/**
|
|
91
|
+
/**
|
|
92
|
+
* 写入固定落地页 URL、供接收方 {@link MiniProgramShareModule.getExtra | share.getExtra}
|
|
93
|
+
* 读取的业务状态;遵守 {@link MiniProgramShareExtraValue} 的类型、深度、项数和 128 字节限制。
|
|
94
|
+
* 省略时不携带 `extra`,也不会继承当前启动链接中的值。
|
|
95
|
+
*/
|
|
36
96
|
extra?: MiniProgramShareExtraValue;
|
|
37
|
-
/**
|
|
97
|
+
/**
|
|
98
|
+
* 分享缩略图的绝对 URL;必须是非空字符串、可由 `URL` 解析,且协议严格为 `http:` 或
|
|
99
|
+
* `https:`。SDK 只校验 URL,不负责下载、裁剪或确认 Host 最终采用该图片。
|
|
100
|
+
*/
|
|
38
101
|
imageUrl?: string;
|
|
39
|
-
/**
|
|
102
|
+
/**
|
|
103
|
+
* 指定站外分享渠道;省略时由客户端展示默认面板。不能与有效 `post` 同时使用,且具体
|
|
104
|
+
* 渠道是否可用由 Host 决定。
|
|
105
|
+
*/
|
|
40
106
|
channel?: MiniProgramShareChannel;
|
|
41
|
-
/**
|
|
107
|
+
/**
|
|
108
|
+
* 转发到社区时使用的分区与话题预置;`null` 或省略表示不预置。
|
|
109
|
+
*
|
|
110
|
+
* @remarks
|
|
111
|
+
* 普通分享最多保留一个规范化后的 `topicIds`,但可保留多个去重后的 `topics`。开发态对
|
|
112
|
+
* 无效项、空预置、多个分区或与 `channel` 的冲突返回 `INVALID_PARAMS`;生产态会过滤无效项、
|
|
113
|
+
* 截断到首个分区,并在冲突时保留 `channel`、省略 `post`,不会阻断基础分享面板。
|
|
114
|
+
* 用户进入发帖页后仍可修改或取消,SDK 不会直接发布帖子。
|
|
115
|
+
*/
|
|
42
116
|
post?: MiniProgramSharePostOptions | null;
|
|
43
117
|
}
|
|
44
118
|
/**
|
|
45
119
|
* 截图区域。
|
|
46
120
|
*
|
|
47
121
|
* @remarks
|
|
48
|
-
*
|
|
122
|
+
* 坐标与尺寸均使用当前小程序可见窗口的逻辑像素,原点是窗口左上角,与
|
|
123
|
+
* {@link MiniProgramViewportModule.getWindowInfo | viewport.getWindowInfo} 返回的
|
|
124
|
+
* `windowWidth`、`windowHeight` 使用同一坐标系。TypeScript 调用方应传有限 number;当前
|
|
125
|
+
* Runtime 会先用 `Number(...)` 转换 JavaScript 值再校验范围,因此字符串、boolean、`null`
|
|
126
|
+
* 等可能被兼容转换,业务不应依赖该宽松行为。Runtime 不会取整,也不会把矩形夹取到窗口边界;调用方应确保
|
|
127
|
+
* `left + width <= windowWidth`、`top + height <= windowHeight`。
|
|
128
|
+
*
|
|
129
|
+
* 省略整个 `rect` 时,Runtime 会在调用时读取当前窗口并构造
|
|
130
|
+
* `{ left: 0, top: 0, width: windowWidth, height: windowHeight }`。窗口可能在用户拖动、
|
|
131
|
+
* 旋转设备或 Host 恢复后变化,不要长期缓存旧矩形。
|
|
132
|
+
*
|
|
133
|
+
* @see {@link MiniProgramScreenshotOptions.rect}
|
|
134
|
+
* @see {@link MiniProgramViewportModule.getWindowInfo | viewport.getWindowInfo}
|
|
49
135
|
*/
|
|
50
136
|
export interface MiniProgramScreenshotRect {
|
|
51
|
-
/**
|
|
137
|
+
/** 截图区域左边缘距窗口左边缘的逻辑像素数;转换后必须有限且大于等于 `0`。 */
|
|
52
138
|
left: number;
|
|
53
|
-
/**
|
|
139
|
+
/** 截图区域上边缘距窗口上边缘的逻辑像素数;必须是有限且大于等于 `0` 的数。 */
|
|
54
140
|
top: number;
|
|
55
|
-
/**
|
|
141
|
+
/** 截图区域宽度,单位逻辑像素;必须是有限且大于 `0` 的数。 */
|
|
56
142
|
width: number;
|
|
57
|
-
/**
|
|
143
|
+
/** 截图区域高度,单位逻辑像素;必须是有限且大于 `0` 的数。 */
|
|
58
144
|
height: number;
|
|
59
145
|
}
|
|
60
146
|
/**
|
|
@@ -62,14 +148,53 @@ export interface MiniProgramScreenshotRect {
|
|
|
62
148
|
*
|
|
63
149
|
* @remarks
|
|
64
150
|
* 该配置只暴露截图与保存相册相关基础字段,不暴露宿主内部上传、回调或样式扩展能力。
|
|
151
|
+
* 所有字段均可省略;省略整个配置等同于传入空配置,并在调用时截取当前可见窗口。
|
|
152
|
+
* JavaScript 调用在运行时传入 `null` 也会按空配置处理,但 TypeScript 调用方应直接省略参数。
|
|
153
|
+
*
|
|
154
|
+
* @see {@link MiniProgramShareModule.screenshot | share.screenshot}
|
|
65
155
|
*/
|
|
66
156
|
export interface MiniProgramScreenshotOptions {
|
|
67
|
-
/**
|
|
157
|
+
/**
|
|
158
|
+
* 指定截图区域;省略时截取调用时的整个可见窗口。
|
|
159
|
+
*
|
|
160
|
+
* @remarks
|
|
161
|
+
* 字段单位、有效范围和窗口边界要求见 {@link MiniProgramScreenshotRect}。Runtime 不会
|
|
162
|
+
* 自动按设备像素比换算,也不会裁正越界矩形。
|
|
163
|
+
*/
|
|
68
164
|
rect?: MiniProgramScreenshotRect;
|
|
69
|
-
/**
|
|
165
|
+
/**
|
|
166
|
+
* Host 开始截图前的延迟,单位毫秒;TypeScript 调用应传 number,Runtime 用 `Number(...)`
|
|
167
|
+
* 转换后要求有限且大于等于 `0`。
|
|
168
|
+
*
|
|
169
|
+
* @remarks
|
|
170
|
+
* Runtime 不要求整数,也不设置上限。省略时不会下发 `delay`,由当前 Host 使用默认值;
|
|
171
|
+
* Host 仍可按平台能力拒绝过大的值。
|
|
172
|
+
*/
|
|
70
173
|
delay?: number;
|
|
71
|
-
/**
|
|
174
|
+
/**
|
|
175
|
+
* 是否在客户端截图分享流程中提供保存到系统相册的能力。
|
|
176
|
+
*
|
|
177
|
+
* @remarks
|
|
178
|
+
* `true` 明确请求提供,`false` 明确关闭。省略时不会下发该开关,由当前 Host 决定
|
|
179
|
+
* 默认行为;该字段本身不表示图片已经保存成功。
|
|
180
|
+
*/
|
|
72
181
|
saveToAlbum?: boolean;
|
|
73
|
-
/**
|
|
182
|
+
/**
|
|
183
|
+
* 转发到社区时使用的分区与话题预置;`null` 或省略表示不预置。
|
|
184
|
+
*
|
|
185
|
+
* @remarks
|
|
186
|
+
* 截图分享支持多个分区。`topicIds` 中的正安全整数会转成字符串,字符串会 trim,
|
|
187
|
+
* 再按首次出现顺序去重;`topics` 会 trim、拒绝首尾 `#`,再按首次出现顺序去重。
|
|
188
|
+
* 预置必须至少保留一个有效的 `topicIds` 或 `topics` 项。
|
|
189
|
+
*
|
|
190
|
+
* 开发 Runtime 遇到任一无效项会以 `INVALID_PARAMS` 拒绝,生产 Runtime 则过滤无效项,
|
|
191
|
+
* 将剩余有效项交给客户端;没有有效项时省略整个 `post`,但继续截图。预置只填充
|
|
192
|
+
* 客户端发帖页,用户仍可修改或取消,不会直接发布内容。
|
|
193
|
+
* 当前小程序来源由 Runtime 使用 Host 确认的 canonical identity 自动关联,调用方不能
|
|
194
|
+
* 也无需传入小程序 ID 或其他来源字段。
|
|
195
|
+
*
|
|
196
|
+
* @see {@link MiniProgramSharePostOptions}
|
|
197
|
+
* @see {@link https://docs.xiaoheihe.cn/hb_sdk/recipes/community-share | 社区分享预置}
|
|
198
|
+
*/
|
|
74
199
|
post?: MiniProgramSharePostOptions | null;
|
|
75
200
|
}
|