Auf dieser Seite
Ihr erstes Gerät verbinden
Hardware-SDK 1.2.x installieren, ein Gerät verbinden und Ihre erste Adresse bestätigen.
Diese Seite beschreibt den Ersteinstieg. Wenn er funktioniert, wählen Sie eine Transportanleitung und lesen Sie die Core-API-Anleitung zu PIN, Passphrase, Ereignissen und Signieren.
Hardware SDK 1.2.0 verwendet Protocol V1 (Classic / Mini / Touch / Pro) und Protocol V2 (Pro 2 / Neo) über die gleiche JavaScript-API. Sie wählen das Protokoll nicht in init().
- Ein eingerichtetes OneKey-Gerät und ein USB-Datenkabel
- Ein WebUSB-fähiger Browser, etwa Chrome oder Edge auf dem Desktop
- Ein HTTPS-Ursprung oder localhost für die Entwicklung
1. Paket auswählen
| Laufzeit | Paket | Nächste Anleitung |
|---|---|---|
| Browser / Desktop-WebUSB | @onekeyfe/hd-common-connect-sdk | WebUSB |
| React Native BLE | @onekeyfe/hd-ble-sdk | React Native BLE |
| Native Bridge für Android / iOS / Flutter | @onekeyfe/hd-common-connect-sdk (env: 'lowlevel') | Natives BLE |
| Nur Browser-Iframe-Host | @onekeyfe/hd-web-sdk | Plugin-Iframe-Host |
npm
npm i --save-exact @onekeyfe/[email protected] @onekeyfe/[email protected] @onekeyfe/[email protected]Der Befehl wählt veröffentlichte 1.2.x-Pakete aus und speichert exakte Versionen. Halten Sie SDK, Core und Shared-Pakete auf demselben Release und committen Sie Ihre Lockdatei. Wenn Sie @onekeyfe/hd-web-sdk einbetten, lassen Sie connectSrc weg, damit es zum installierten Paket passt.
2. Einmal initialisieren
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');Rufen Sie init() einmal am App-Einstieg auf. Mischen Sie nicht @onekeyfe/hd-web-sdk und @onekeyfe/hd-common-connect-sdk innerhalb derselben Laufzeit.
3. Suchen, identifizieren, eine Adresse lesen
Registrieren Sie den UI-Ereignishandler vor geschützten Aufrufen, damit gesperrte Geräte die PIN-Eingabe abschließen können. Autorisieren Sie bei WebUSB das Gerät vor der Erkennung über die Verbinden-Schaltfläche des Nutzers:
import { ONEKEY_WEBUSB_FILTER } from '@onekeyfe/hd-shared';
// Run directly in the Connect button handler.
if (!navigator.usb) throw new Error('WebUSB is unavailable in this browser');
await navigator.usb.requestDevice({ filters: ONEKEY_WEBUSB_FILTER });Erkennen Sie anschließend Geräte. Dieses Beispiel setzt genau einen Kandidaten voraus; bei mehreren verfügbaren Geräten muss der Benutzer eines auswählen, bevor es weitergeht.
const devices = await HardwareSDK.searchDevices();
if (!devices.success || !devices.payload.length) {
throw new Error('No OneKey device found');
}
// Select explicitly in the application when more than one device is available.
if (devices.payload.length !== 1) throw new Error('Select exactly one device before continuing');
const { connectId } = devices.payload[0];
if (!connectId) throw new Error("Missing connectId");
const state = await HardwareSDK.getDeviceState(connectId);
if (state.success === false) throw new Error(state.payload.error);
const deviceId = state.payload.identity.deviceId;
if (!deviceId) throw new Error("Device has no wallet identity");
const address = await HardwareSDK.evmGetAddress(connectId, deviceId, {
path: "m/44'/60'/0'/0/0",
useEmptyPassphrase: true,
showOnOneKey: true,
});
if (address.success === false) throw new Error(address.payload.error);
console.log(address.payload.address);Prüfen Sie immer success vor dem Lesen von payload. useEmptyPassphrase: true hält diesen ersten Aufruf auf der Standard-Wallet, damit eine verbliebene Sitzung einer versteckten Wallet die Adresse nicht unbemerkt ändert.
getDeviceState() ist die V1-/V2-Abfrage. getFeatures() unterstützt nur Protocol V1; Pro 2 und Neo müssen getDeviceState() verwenden.
WebUSB erfordert HTTPS und eine Nutzeraktion. BLE erfordert die Bluetooth-Berechtigung des Betriebssystems.
Geräte- und Wallet-Unterstützung
- Das SDK erkennt Protocol V1 oder V2 am aktuell verbundenen Gerät. Verzweigen Sie nicht anhand von USB-PID, BLE-Namen oder Produktzeichenfolge. Siehe Protocol V1 und V2.
- Pro 2 und Neo verwenden dieselben Methoden wie Classic / Pro. Geräteunterschiede stehen unter Geräte.
- Eine Wallet öffnen oder wechseln mit
openWalletSession.getPassphraseStateist veraltet. Siehe Wallet-Sitzungen.
Weiter
ETHEREUM & EVMIhre erste Transaktion signierenParameter, Gebührentypen und die Signaturantwort.- Bereits auf 1.1.x: Auf Hardware SDK 1.2 aktualisieren
- PIN-/Passphrase-UI-Ereignisse anbinden: Core-API-Anleitung
- Echte Verbindung auf Ihrer Plattform herstellen: Transport
- Verbindungsabbrüche behandeln: Verbindungsabbrüche und Wiederverbindung
- Welche Chains auf welchem Gerät: Chain-Unterstützung
- Eine Transaktion signieren: Anleitungen zum Signieren
- Firmware: Firmware-Update
- Ohne Hardware ausprobieren: Testumgebung