本页目录
响应 UI 事件
向设备传输数据
用 HardwareSDK.uiResponse() 回答待处理的 SDK 输入请求。此方法返回 void;实际操作结果需要等待原来的地址、签名或设备操作 Promise。
受保护调用前注册 UI 事件处理器。只回答当前请求;请求带有 payload.responseCorrelation 时,原样转发其中的关联字段。
参数
interactionId 与 deviceId 关联字段位于响应对象顶层。这里的 deviceId 不替代签名方法位置参数中的钱包 deviceId。uiResponse 等生命周期 API 不接受一般的通用参数。
返回 PIN 码结果
下例放在 UI_REQUEST.REQUEST_PIN 处理器中。message 是当前请求,pinValue 是 UI 收集完整后得到的盲输 PIN 位置序列。
HardwareSDK.uiResponse({
...message.payload.responseCorrelation,
type: UI_RESPONSE.RECEIVE_PIN,
payload: pinValue,
});当宿主输入请求提供设备输入选项时,可用 @@ONEKEY_INPUT_PIN_IN_DEVICE 选择在设备输入。带 deviceOnly 标记的请求,以及 ButtonRequest_PinEntry、ButtonRequest_AttachPin,均是设备端输入通知:显示提示并等待,不要回复。
盲输键盘映射和机型限制见 PIN。
返回密码短语结果
下例放在 UI_REQUEST.REQUEST_PASSPHRASE 处理器中。passphraseValue 必须来自用户本次输入,不能硬编码或记录到日志。
HardwareSDK.uiResponse({
...message.payload.responseCorrelation,
type: UI_RESPONSE.RECEIVE_PASSPHRASE,
payload: {
value: passphraseValue,
passphraseOnDevice: false,
save: false,
},
});选择设备输入时改用 { value: '', passphraseOnDevice: true, save: false }。请求含 deviceOnly 时必须选择设备输入。后续的 REQUEST_PASSPHRASE_ON_DEVICE 是通知,不需要回复。
不要把宿主端输入的秘密写入日志、分析系统、持久化存储或错误报告。除非用户明确选择受支持的会话缓存流程,否则使用 save: false。
取消与关闭
用户取消输入时,调用 HardwareSDK.cancel(connectId) 取消所选连接上的操作。操作结束或 SDK 关闭 UI 后,应使待提交的弹窗回调失效,防止延迟响应回答了另一个请求。
REQUEST_BUTTON、固件进度和设备端 PIN 提示都不接受“确定”响应。宿主按钮不能替代设备上的物理确认。
其他输入请求
WebUSB bootloader 选择请求应使用对应的 UI_RESPONSE.SELECT_DEVICE_*,并在 payload 中传入所选设备 ID。公开联合类型 UiResponseEvent 定义了允许的响应结构。