必填标题、描述,以及可选缩略图、渠道、扩展数据和社区发帖预置;每个 字段的规范化与降级规则见 MiniProgramShowShareMenuOptions。
Host 分享面板返回的 unknown 不透明值。平台和客户端版本可能返回 undefined
或不同对象,不能依赖字段或用真假值判断用户是否完成、取消或成功发布。
HbMiniProgramSDKError INVALID_PARAMS 表示参数不是对象,title / desc
trim 后为空,出现自定义 url,imageUrl 不是 HTTP(S),channel 不在公开枚举内,
extra 超出编码限制,缺少 canonical 小程序身份/有效当前 URL,或开发态 post 无效、
超过一个分区、与 channel 冲突。
HbMiniProgramSDKError PERMISSION_NOT_IN_SNAPSHOT / PERMISSION_DENIED 表示
当前运行快照缺少或未启用 share 权限;METHOD_FORBIDDEN / METHOD_NOT_FOUND 表示当前 Host 未开放
分享面板;REQUEST_UNSUPPORTED 表示 Host 不支持当前分享参数或渠道。
HbMiniProgramSDKError RUNTIME_DESTROYED / RUNTIME_UNAVAILABLE /
SDK_DESTROYED 表示 Runtime、容器或 SDK 已进入终态。SDK 握手失败或 Host 面板调用超时
时,还会返回对应握手错误码或 REQUEST_TIMEOUT;其他 Host 分享错误保留其 SDK 错误码。
Runtime 使用 Host 确认的 canonical 小程序 ID 构造固定通用落地页,并按可用情况附带当前
小程序版本、启动 URL 的 h_src 和本次显式传入的 extra。不能传自定义 url,也不会
继承当前启动 URL 中已有的 extra。接收方新启动小程序后用
share.getExtra 同步读取该值。
channel 用于站外渠道,post 用于社区发帖页预置,两者不要同时配置。post.topicIds
会转换为字符串、trim、去重,普通分享最多保留第一项;post.topics 会 trim、拒绝首尾
# 并去重。开发 Runtime 对任一无效项或冲突返回 INVALID_PARAMS;生产 Runtime 会过滤
无效项,在冲突时保留 channel、省略 post,继续打开基础面板。社区预置只填充可编辑
发帖页,用户仍可修改或取消,SDK 不能直接发布内容。
该方法需要声明并启用 share,但不额外要求 network、clipboard 权限或可信用户手势;
分享面板内仍由用户完成最终确认。移动端 Host 支持分享面板;当前新 PC Host 未开放,
Windows/macOS 调用应处理 METHOD_FORBIDDEN。Browser Dev Host 的确认弹窗只用于开发模拟。
showShareMenu 不截图,也不会隐藏小程序导航栏或其他 Host chrome。需要把当前画面交给
分享流程时使用 share.screenshot;后者会在
capture 前临时隐藏截图 chrome,并在结束后尽力恢复。只需复制同一固定落地链接时使用
share.copyLink。
import hbSDK from '@heybox/hb-sdk'
async function shareToWechat() {
await hbSDK.share.showShareMenu({
title: '本周战绩',
desc: '查看我的最新战绩',
imageUrl: 'https://cdn.example.com/share/weekly.png',
channel: 'wechatSession',
extra: { tab: 'weekly' },
})
}
async function shareToCommunity() {
await hbSDK.share.showShareMenu({
title: '本周战绩',
desc: '查看我的最新战绩',
post: {
topicIds: [235709],
topics: ['无畏契约战绩'],
},
})
}
展示以当前小程序通用分享页为落地页的基础分享面板。