@heybox/hb-sdk API Reference - v0.9.5
    正在准备搜索索引...

    函数 getHandshakeState

    • 获取默认 SDK 实例的当前握手状态。

      返回 MiniProgramSDKHandshakeState

      当前冻结的 MiniProgramSDKHandshakeState: connecting 表示初始握手尚未落定,ready 表示握手成功;failed 表示握手失败,并通过 error 保留原始 HbMiniProgramSDKError。状态不变期间重复调用 返回同一个对象引用,落定时只会替换一次。

      该函数不接收参数并同步返回当前快照,不等待 Promise、不轮询、不发送 bridge 请求,也不会因为 握手失败而抛出 failed.error。读取状态无需在 package.json#heybox.permissions 中声明权限, 不要求可信用户手势。根包导入时已经自动启动握手;普通异步能力调用也会自行等待,不需要用本 API 手动实现等待器。

      状态 wrapper 已浅冻结。状态机只允许 connecting -> ready 或 connecting -> failed 一次迁移, 终态不会回退或互相转换;failed.error 是握手 Promise 使用的同一个原始错误实例,可根据稳定的 code 分支处理。常见初始失败包括 NOT_IN_IFRAME、MISSING_NONCE、READY_TIMEOUT、 HANDSHAKE_FAILED、RUNTIME_UNAVAILABLE 或握手完成前的 SDK_DESTROYED。

      需要让界面跟随状态变化时,使用 onHandshakeStateChange():它会在订阅期间同步回放 当前值,再通知至多一次终态迁移。不要轮询本函数。对于必须保留原始可信用户手势的按钮,可用 该持久状态提前控制 disabled,但不要在点击回调里等待握手。

      on('ready') 是握手成功瞬间的事件:不会向晚订阅者重放,Host 重复 派发时也可能再次触发事件 handler;持久状态则只迁移一次并始终可查询。ready 只表示初始握手 已成功,后续 unload 不会把状态改回 failed,因此不能把它当作 Runtime 持续存活检查。

      SDK 会在发布 ready 状态前缓存环境快照,所以 status === 'ready' 时可以立即调用 environment.getInfoSync()。failed 时该同步环境 API 会抛出 同一个 state.error;不要求同步读取时,优先使用会自动等待的 environment.getInfo()。

      import hbSDK from '@heybox/hb-sdk'

      const state = hbSDK.getHandshakeState()

      switch (state.status) {
      case 'connecting':
      submitButton.disabled = true
      break
      case 'ready': {
      submitButton.disabled = false
      const environment = hbSDK.environment.getInfoSync()
      console.log(environment.runtime.mode)
      break
      }
      case 'failed':
      submitButton.disabled = true
      console.error('SDK 握手失败', state.error.code)
      break
      }

      0.7.0

      android

      ios

      ohos

      windows

      macos

      android none

      ios none

      ohos none

      windows none

      macos none