@heybox/hb-sdk API Reference - v0.9.5
    正在准备搜索索引...
    • 获取当前小程序实例的环境快照,并在必要时自动等待 SDK 握手。

      返回 Promise<MiniProgramEnvironmentInfo>

      握手完成后 resolve 的同一份深度冻结环境快照,包含:

      • runtime.mode:production、preview、development 或 unknown;
      • host.appVersion:Host 提供的小黑盒 App 版本,缺失或非法时为 null;
      • miniProgram.id:平台确认的 canonical 小程序 ID,缺失或非法时为 null;
      • miniProgram.version:当前加载的小程序版本,缺失或非法时为 null;
      • operatingSystem.name:Host 提供的标准系统枚举,缺失或非法时为 unknown;
      • operatingSystem.version:Host 提供的系统版本,缺失或非法时为 null;
      • sdk.version:当前页面实际运行的 @heybox/hb-sdk 版本。

      HbMiniProgramSDKError 初始握手进入 failed 时拒绝。常见错误码包括 NOT_IN_IFRAME、MISSING_NONCE、READY_TIMEOUT、HANDSHAKE_FAILED,以及握手完成前 Runtime 卸载产生的 RUNTIME_UNAVAILABLE。本异步 API 在 connecting 状态会等待,不会抛出 ENVIRONMENT_NOT_READY。

      该方法不接收参数。导入根包时 SDK 已自动启动握手;调用发生在 connecting 状态时会等待 持久握手状态进入 ready,随后直接返回握手阶段缓存的快照。并发或重复调用不会重新请求 Host,并会得到引用相同的对象;快照和所有嵌套对象均不可变,也不会随页面生命周期继续更新。

      Host 下发的非空字符串会去除首尾空白。旧版 Host 未下发环境信息,或某个字段类型、枚举值 非法时,只降级对应字段并保持完整返回结构,不会因此阻断握手。除 sdk.version 遵循 npm SemVer 外,其他版本字段均为不透明字符串,不能用于版本大小判断。

      该 API 无需在 package.json#heybox.permissions 中声明权限,不触发用户授权,也不返回设备唯一 标识或账号信息。结果只适合界面适配、兼容降级、埋点和诊断;小程序可修改发往服务端的值, 因而不能将其作为鉴权、权限控制或风控依据。

      Android、iOS、OHOS、Windows 与 macOS 的最低客户端要求见本页兼容性元数据。本地 Browser Dev Host 中 runtime.mode 为 development,操作系统名称来自当前设备预设,不从 iframe 的 User-Agent 推断。

      已经确认握手为 ready 且必须同步读取时,可改用 environment.getInfoSync();需要驱动加载或失败界面时, 使用 getHandshakeState() 或 onHandshakeStateChange(),不要依赖不会重放的 ready 生命周期事件。

      import hbSDK from '@heybox/hb-sdk'

      const info = await hbSDK.environment.getInfo()

      console.log({
      mode: info.runtime.mode,
      miniProgramId: info.miniProgram.id ?? 'unknown',
      appVersion: info.host.appVersion ?? 'unknown',
      platform: info.operatingSystem.name,
      sdkVersion: info.sdk.version,
      })
      import hbSDK, { HbMiniProgramSDKError } from '@heybox/hb-sdk'

      try {
      const info = await hbSDK.environment.getInfo()
      applyPlatformLayout(info.operatingSystem.name)
      } catch (error) {
      if (error instanceof HbMiniProgramSDKError) {
      showEnvironmentUnavailable(error.code)
      } else {
      throw error
      }
      }

      0.8.1

      android

      ios

      ohos

      windows

      macos

      android none

      ios none

      ohos none

      windows none

      macos none