@heybox/hb-sdk API Reference - v0.9.5
    正在准备搜索索引...
    • 请求宿主关闭当前小程序容器。

      返回 Promise<void>

      Host 关闭原语接受请求后 resolve undefined;这不是“页面仍可继续执行”的确认。

      HbMiniProgramSDKError INVALID_PARAMS 表示通过底层协议传入了非空 payload; App-facing close() 本身没有参数。

      HbMiniProgramSDKError METHOD_FORBIDDEN / METHOD_NOT_FOUND 表示当前 Host 未实现或未开放关闭原语;REQUEST_UNSUPPORTED 表示 Host 无法执行当前关闭请求。

      HbMiniProgramSDKError RUNTIME_DESTROYED / RUNTIME_UNAVAILABLE / SDK_DESTROYED 表示 Runtime、容器或 SDK 已进入终态。SDK 握手失败或 Host 在调用超时内 未接受请求时,还会返回对应握手错误码或 REQUEST_TIMEOUT。其他 Host 关闭错误保留其 SDK 错误码。

      该方法在 android、ios、ohos、windows、macos 上公开,但实际 Host 必须提供 presentation.close 原语;缺失时 fail closed。调用无需 package.json#heybox.permissions 声明、平台批准、用户授权或可信用户手势。

      Host 接受请求后可以立即销毁 iframe 和当前 JavaScript 上下文。不要依赖 await close() 后的语句、timer、微任务、事件监听或内存状态完成关键工作;当前上下文销毁后,pending 与后续 SDK 请求会失败。每次调用都会直接转发给 Host,不是可查询的关闭状态或幂等事务。

      需要保留的数据必须在调用前写完并等待成功,例如先 await storage.setStorage 或业务服务端请求,再调用本方法。 storage.setStorage 自身要求 storage 权限;这不会让 navigation.close 也需要该权限。

      Host 销毁当前运行环境时会尽力派发 on('unload'),但 unload 不重放且可能来不及送达,只适合停止轮询、释放观察者等快速幂等清理,不能作为 最后一次持久化机会。需要保留容器但创建新页面上下文时使用 navigation.reload,不要把 close 当作 reload。

      import hbSDK from '@heybox/hb-sdk'

      async function saveAndClose(draftText: string) {
      // 所有必须完成的写入都放在 close 之前,并等待 Host 确认持久化。
      await hbSDK.storage.setStorage({
      key: 'draft',
      data: { text: draftText, updatedAt: Date.now() },
      })

      await hbSDK.navigation.close()
      // 不要在这里安排必须执行的业务逻辑;当前上下文可能已经终止。
      }

      0.4.4

      android

      ios

      ohos

      windows

      macos

      android none

      ios none

      ohos none

      windows none

      macos none