Skip to Content
HardwareErste Schritte
HARDWARE-SDK · WEBUSB

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().

VOR DEM START
  • 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

LaufzeitPaketNächste Anleitung
Browser / Desktop-WebUSB@onekeyfe/hd-common-connect-sdkWebUSB
React Native BLE@onekeyfe/hd-ble-sdkReact 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-sdkPlugin-Iframe-Host
Terminal
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. getPassphraseState ist veraltet. Siehe Wallet-Sitzungen.

Weiter

ETHEREUM & EVMIhre erste Transaktion signierenParameter, Gebührentypen und die Signaturantwort.
  1. Bereits auf 1.1.x: Auf Hardware SDK 1.2 aktualisieren
  2. PIN-/Passphrase-UI-Ereignisse anbinden: Core-API-Anleitung
  3. Echte Verbindung auf Ihrer Plattform herstellen: Transport
  4. Verbindungsabbrüche behandeln: Verbindungsabbrüche und Wiederverbindung
  5. Welche Chains auf welchem Gerät: Chain-Unterstützung
  6. Eine Transaktion signieren: Anleitungen zum Signieren
  7. Firmware: Firmware-Update
  8. Ohne Hardware ausprobieren: Testumgebung
Zuletzt aktualisiert am