Skip to Content
硬件接入概览

简介

面向开发者的 OneKey 硬件钱包集成文档,适用于 Web 和原生应用。

Hardware SDK 1.2.x 支持两种协议。Protocol V1 和 Protocol V2 走同一套 JavaScript API。第一次接入请先看 快速开始。

本页是入门层 —— 帮你选对 SDK 包并装上。端到端流程(搜设备 → 事件 → PIN/passphrase → 首次签名)和参数、事件、错误处理的完整说明,请看 Core API Guide。

选择传输协议

USB 场景一律推荐 @onekeyfe/hd-common-connect-sdk。@onekeyfe/hd-web-sdk 仅用于插件端(iframe 嵌入形式)。

连接方式

方式描述支持机型
USB / WebUSB有线 USB;浏览器使用 WebUSB,Node.js/CLI 使用 node-usb具备兼容 USB 接口与固件的设备
Bluetooth BLE(原生)原生 App 的 BLE;不支持 Web BluetoothPro、Pro 2、Neo、Touch、Classic 1s / Classic 1s Pure;Mini 不支持 BLE
Air-Gap(二维码)离线扫码签名OneKey Pro 和 Pro 2;Neo 无摄像头

平台指南

平台(技术栈)传输协议SDK 包指南
Web(浏览器)WebUSB@onekeyfe/hd-common-connect-sdk WebUSB 连接指南
React Native蓝牙@onekeyfe/hd-ble-sdk React Native 蓝牙
Android(原生)蓝牙@onekeyfe/hd-common-connect-sdk Android 蓝牙
iOS(原生)蓝牙@onekeyfe/hd-common-connect-sdk iOS 蓝牙
Flutter蓝牙@onekeyfe/hd-common-connect-sdk Flutter 蓝牙

低层协议与自定义通道参考:底层传输插件与协议

安装 SDK

按运行时选择一个入口安装:

# Web / 桌面 WebUSB(推荐) npm i @onekeyfe/hd-common-connect-sdk # React Native BLE npm i @onekeyfe/hd-ble-sdk # 原生宿主 + 底层插件(Android/iOS/Flutter 桥接) npm i @onekeyfe/hd-common-connect-sdk # 插件端 iframe(仅插件端) npm i @onekeyfe/hd-web-sdk

传输细节:

初始化 SDK

按照运行时选择对应的初始化方式,避免混用。

Web / 桌面 WebUSB

使用 @onekeyfe/hd-common-connect-sdk:

import HardwareSDK from '@onekeyfe/hd-common-connect-sdk'; const initialized = await HardwareSDK.init({ env: 'webusb', debug: false, fetchConfig: true, }); if (!initialized) throw new Error('SDK initialization failed');

React Native BLE

使用 @onekeyfe/hd-ble-sdk:

import HardwareSDK from '@onekeyfe/hd-ble-sdk'; const initialized = await HardwareSDK.init({ debug: false, }); if (!initialized) throw new Error('SDK initialization failed');

原生桥接 / 低层协议

使用 @onekeyfe/hd-common-connect-sdk。下例展示环境选项;实际接入还需按底层传输插件提供并传入原生 BLE 插件:

import HardwareSDK from '@onekeyfe/hd-common-connect-sdk'; import type { LowlevelTransportSharedPlugin } from '@onekeyfe/hd-transport'; // Provide an implemented native BLE bridge; this is a preparation fragment. declare const plugin: LowlevelTransportSharedPlugin; const initialized = await HardwareSDK.init({ env: 'lowlevel', debug: false, fetchConfig: true, }, undefined, plugin); if (!initialized) throw new Error('SDK initialization failed');
环境使用场景
webusb浏览器 WebUSB(无 iframe)
lowlevel原生应用通过底层适配器桥接 JS
react-native基于自定义 RN 桥或 Electron BLE
emulator使用内置模拟器

插件端 Iframe

使用 @onekeyfe/hd-web-sdk(仅插件端)。SDK 默认 iframe 地址是 https://jssdk.onekey.so/<安装包版本>/,来自 getSDKVersion()。除非自建 iframe,否则不要传 connectSrc。

当前文档构建跟踪的 SDK 包版本是 1.2.8-alpha.12. 插件 iframe 默认地址是 https://jssdk.onekey.so/1.2.8-alpha.12/. 请省略 connectSrc,让 SDK 使用安装包版本。只有自建 iframe 时才覆盖,且必须与安装的 @onekeyfe/hd-web-sdk 版本一致。

import HdWebSdk from '@onekeyfe/hd-web-sdk'; const HardwareSDK = HdWebSdk.HardwareWebSdk; const initialized = await HardwareSDK.init({ debug: false, // omit connectSrc — SDK fills https://jssdk.onekey.so/<installed-version>/ }); if (!initialized) throw new Error('SDK initialization failed');

下一步

HardwareSDK.init(...) 完成之后,先用 快速开始 读出第一个地址,其余流程在 Core API Guide 里端到端讲清楚:

设备与传输兼容性

蓝牙、USB、Air-Gap 与协议族支持状态

设备协议蓝牙USBAir-Gap
OneKey Classic 1s
OneKey Classic 1s
经典款 Classic 1s
V1支持支持不支持
OneKey Classic 1s Pure
OneKey Classic 1s Pure
Classic 1s Pure 无电池版本
V1支持支持不支持
OneKey Mini
OneKey Mini
紧凑型 USB 钱包
V1不支持支持不支持
OneKey Touch
OneKey Touch
全触屏体验
V1支持支持不支持
OneKey Pro
OneKey Pro
旗舰版,支持指纹识别
V1支持支持支持
OneKey Pro 2
OneKey Pro 2
Protocol V2 专业版
V2支持支持支持
OneKey Neo
OneKey Neo
Protocol V2 轻量版,无摄像头
V2支持支持不支持

Air-Gap 模式: OneKey Pro 和 Pro 2 支持通过二维码离线签名(Air-Gap),无需 USB 或蓝牙连接,签名前由用户在设备上核对详情。详见 Air-Gap 集成。

核心包

包名用途NPM版本
@onekeyfe/hd-common-connect-sdk统一的 Web/原生 SDK 接口;推荐作为传输层入口npm npm
@onekeyfe/hd-ble-sdk纯 React Native 蓝牙协议栈(推荐用于 RN 项目)npm npm
@onekeyfe/hd-transport-react-nativeReact Native 传输层副作用/桥接npm npm
@onekeyfe/hd-transport-web-deviceWeb 环境设备访问传输层npm npm
@onekeyfe/hd-transport-emulator模拟器传输层(无需物理设备即可开发和测试)npm npm
@onekeyfe/hd-transport-httpHTTP 桥接传输层npm npm
@onekeyfe/hd-transport-lowlevel底层主机适配器协议(用于原生集成)npm npm
@onekeyfe/hd-core核心事件、常量、消息处理npm npm
@onekeyfe/hd-shared共享工具和类型npm npm
@onekeyfe/hd-web-sdkWeb SDK 封装(不推荐;建议使用 hd-common-connect-sdk)npm npm

延伸阅读

支持

致用户:本文档主要面向开发者。如果您在使用我们的产品时遇到问题,请查阅帮助中心或提交工单。

相关仓库


立即体验

最后更新于