Appearance
跨小程序跳转
使用 navigation.openAppPage() 的 mini_program 目标打开另一个公开发布的小程序。目标只按稳定 miniProgramId 寻址;实际版本和当前用户能否访问由 Host 决定。
ts
import hbSDK from '@heybox/hb-sdk'
await hbSDK.navigation.openAppPage({
target: 'mini_program',
miniProgramId: '2e2b8e19-8d73-45f8-8785-b87fd5535510',
extra: {
page: 'ranking',
itemId: 123,
},
})目标小程序在新的启动上下文中读取同一份数据:
ts
import hbSDK from '@heybox/hb-sdk'
const launchData = hbSDK.share.getExtra()extra 与分享扩展数据使用相同合同:只支持 JSON-compatible 数据,最多嵌套 8 层,单个数组或 对象最多 64 项,MessagePack 编码后不超过 128 字节。省略 extra 时目标读取到 undefined; 显式传入 null 时读取到 null。当前小程序已有的启动 extra 不会自动继承,需要转发时应显式 读取并再次传入。
该调用无需权限声明或可信用户手势。它不接受版本、URL、scheme、页面路径或窗口展示参数;生产 Host 只打开公开发布且当前用户可访问的目标,预览和本地开发目标仅由 Dev Host 提供。Promise 在 Host 接受开窗请求时 resolve,不等待目标加载或 SDK 握手,也不返回目标结果。Host 不支持新目标时 直接 fail closed,不回退私有协议或任意 URL。
支持方向控制的 Host 在开窗前先恢复当前容器为竖屏、非全屏,等待确认最多 10 秒。 恢复超时返回 ORIENTATION_TIMEOUT 并取消宿主操作;SDK 总请求超时返回 REQUEST_TIMEOUT, 同时通知 Runtime 取消。恢复错误、超时、请求取消或 SDK 销毁后不会继续开窗,晚到的成功回复 也不会触发跳转。没有方向原语或返回 supported: false 的旧 Host 仍可正常跳转。
恢复会更新当前容器的确认状态,返回后不会自动恢复原来的横屏。需要横屏的页面可在 show 事件中重新调用 viewport.setDisplay({ orientation: 'landscape' })。
进一步阅读: