完整协议字符串(如 heybox://<encodeURIComponent(JSON)>)或包含
protocol_type 的 JSON 协议对象。
协议投递成功后 resolve undefined。成功只表示已交给 Host 投递,不表示协议业务
动作已经完成;协议自身的业务返回值与回调不会转发给调用方。
HbMiniProgramSDKError INVALID_PARAMS:输入既不是非空字符串,也不是带非空
字符串 protocol_type 的 JSON 可序列化对象(含函数、symbol、BigInt、非有限数字或循环
引用时会失败),此时不会产生任何投递。
HbMiniProgramSDKError PERMISSION_NOT_IN_SNAPSHOT / PERMISSION_DENIED:当前运行快照
缺少 appProtocol,或该权限未启用/未获平台批准;不会产生协议副作用。
HbMiniProgramSDKError METHOD_FORBIDDEN / METHOD_NOT_FOUND:当前 Host 未
开放或尚不认识通用协议执行能力;旧 PC Host 属于此分支。Host 明确拒绝的协议也可能映射为
不支持错误。
HbMiniProgramSDKError 其它握手、bridge 超时、Runtime 销毁与 Host 投递失败会保留 对应错误码。底层明确投递失败时一定 reject,不会把失败当作成功。
最高危险等级。 该 API 与 appProtocol 权限均为当前最高危险等级 high:平台批准后,
该入口可以执行任意小黑盒协议,并绕过其他 SDK 能力权限及其专用授权流程(例如网络类协议
不再要求 network,读取用户资料不再要求 userInfo)。appProtocol 只作用于
device.executeProtocol(),不会让其它 SDK 方法免除自身权限。底层协议工具、客户端与操作
系统原本的支持范围、可信手势与执行规则继续生效;未获批准或未声明的调用不会产生任何副作用。
SDK 不维护协议类型白名单,也不把对象重组为 navigation.openAppPage 的目标联合;字符串与对象都交给各端已有协议实现处理,因此各端实际支持的协议范围由已有工具 决定,移动端与 PC 不保证逐条一致。本方法不自动重试,避免副作用协议被重复执行。
本地调试时可在 hb-sdk dev 中声明 appProtocol,经 Host 确认后获得当前 Dev Session 的临时
授权;临时授权不代表平台批准,remote deploy 与生产构建仍按线上批准执行。
import hbSDK from '@heybox/hb-sdk'
// 自行构造协议对象。
await hbSDK.device.executeProtocol({
protocol_type: 'openRouterPath',
path: '/game/detail',
params: { app_id: '570' },
})
// 后端下发的完整协议字符串也可直接传入。
const protocol = { protocol_type: 'openRouterPath', path: '/game/detail', params: { app_id: '570' } }
await hbSDK.device.executeProtocol(`heybox://${encodeURIComponent(JSON.stringify(protocol))}`)
执行一条任意小黑盒客户端协议。
暂不对外开放。
device.executeProtocol()与appProtocol权限当前仅为预留能力, 不提供开发者申请入口;请勿在对外发布的小程序中依赖此 API。本地临时授权不代表对外开放。