@heybox/hb-sdk API Reference - v0.9.5
    正在准备搜索索引...
    • 准备指定 alias 的 Companion 产物,并可观察进度或请求取消。

      参数

      • alias: string

        package.json#heybox.companions 中声明的 Companion alias。必须完整匹配 [a-z][a-z0-9-]{0,31}:长度为 1 至 32,第一个字符是小写 ASCII 字母,其余字符 只能是小写字母、数字或连字符;SDK 不会 trim 或改变大小写。

      • 可选options: CompanionPrepareOptions

        可选取消信号与进度回调;字段合同见 CompanionPrepareOptions。

      返回 Promise<CompanionInfo>

      Host 完成原子提交后返回当前产物的冻结 CompanionInfo。如果产物已经 ready,Host 可直接返回;如果加入同 alias 在途操作,则与该共享操作一同 settle。 返回值没有 state 或 preparedAt,需要这些字段时调用 companion.getPreparationStatus。

      HbMiniProgramSDKError alias、options、signal 或 onProgress 不合法时在 请求前以 INVALID_PARAMS 拒绝。真正开始新准备时,缺少新的可信用户手势以 USER_GESTURE_REQUIRED 拒绝,用户取消 Host 授权以 COMPANION_USER_CANCELLED 拒绝; 下载、归档、完整性或入口失败,以及准备被取消时,分别可能以 COMPANION_DOWNLOAD_FAILED、 COMPANION_ARCHIVE_INVALID、COMPANION_INTEGRITY_FAILED、 COMPANION_ENTRYPOINT_INVALID、COMPANION_PREPARATION_CANCELLED 拒绝。

      当前版本未声明 alias、当前平台没有匹配 target、预览 Host 不支持 Companion、描述符 暂不可用或当前 Host 未开放能力时,可能以 COMPANION_NOT_DECLARED、 COMPANION_TARGET_UNSUPPORTED、COMPANION_PREVIEW_UNSUPPORTED、 COMPANION_DESCRIPTOR_UNAVAILABLE、COMPANION_UNSUPPORTED 或 METHOD_FORBIDDEN 拒绝。 当前运行快照缺少或未启用 companion 权限时分别以 PERMISSION_NOT_IN_SNAPSHOT、 PERMISSION_DENIED 拒绝;Host 返回非法状态、进度或产物描述时以 COMPANION_HOST_FAILED 拒绝。握手失败、SDK/Runtime 已销毁及其他 bridge 或 Host 失败 会保留对应 SDK 错误码。

      准备由 Host 持有,包含下载、SHA-256/归档校验、受控解压和原子提交。真正开始一项新 准备前,Runtime 要求新的可信用户手势,并展示一次 Host 授权;调用应直接发生在准备 按钮回调中,作为该回调的第一个异步操作,不要预先等待握手或其他 Promise。

      同一小程序 identity、版本、target 与 alias 同时只运行一项准备。状态已经 preparing 时,再次调用会加入同一操作、复用下载并接收进度,不重复授权;状态已经 ready 时也不重复授权或下载。因而 join/ready 快路径可以在没有新手势时完成,但业务 不应依赖它绕过真正新准备的手势要求。

      页面 reload、最小化或进入后台只断开当前 observer,不会取消 Host 操作。新页面先调用 getPreparationStatus() 恢复 UI;若为 preparing,可再次调用 prepare() 加入并继续 观察。该长操作不使用普通 SDK 请求的固定总时长 timeout,仍可能因 Host、网络、权限 撤销或 Runtime 终止失败。

      onProgress 只用于展示,完整阶段为 downloading、verifying、extracting。业务不能 根据进度值自行判断 ready;Promise resolve 或重新查询到 ready 才表示 Host 已完成 原子提交。

      在途 signal 触发或显式调用 companion.cancelPreparation 都只发送 best-effort 取消意图。取消先于提交生效时,prepare 通常以 COMPANION_PREPARATION_CANCELLED 拒绝;原子提交已开始时提交结果优先,本 Promise 仍 可能成功并返回 CompanionInfo。取消后应重新查询状态,不能直接假设 not-prepared。

      prepare() 只使产物 ready,不会启动进程。真正新启动必须由另一场可信用户操作调用 companion.launch,不能在同一个点击中 await prepare() 后串联。只需要名称、target、能力、大小、签名或来源时,使用 companion.getInfo,避免触发准备工作流。

      该调用需要 Manifest 声明且平台批准 companion 权限。V1 真实准备仅支持新 PC Host 的 windows-x64 与 macos-arm64;Browser Dev Host 只模拟固定进度和状态,不下载、校验或 解压真实归档,不能替代目标系统验收。

      import hbSDK from '@heybox/hb-sdk'

      prepareButton.addEventListener('click', () => {
      const controller = new AbortController()
      cancelButton.onclick = () => controller.abort()

      // prepare() 是本次点击中的第一个异步操作。
      void hbSDK.companion.prepare('runner', {
      signal: controller.signal,
      onProgress(progress) {
      renderProgress(progress)
      },
      }).then(info => {
      renderPreparedArtifact(info.displayName, info.source)
      showLaunchButton() // launch 由之后另一场点击触发。
      }).catch(showPreparationError)
      })

      0.8.1

      windows

      macos

      windows none

      macos none