握手完成后 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
}
}
获取当前小程序实例的环境快照,并在必要时自动等待 SDK 握手。