En esta página
Flutter: Conectar mediante Bluetooth (nativo)
Esta guía se basa en el Plugin de transporte de bajo nivel para la interfaz de E/S BLE y los límites de Protocol V1/V2; léelo primero.
Para aplicaciones Flutter que cargan un bundle JS en una WebView o motor JS y lo conectan a @onekeyfe/hd-common-connect-sdk mediante un adaptador de bajo nivel.
Paso 1. Elegir el entorno de ejecución
- WebView: estable y ampliamente compatible; API de conexión idéntica a las envolturas nativas iOS/Android
- Motor JS: por ejemplo,
flutter_js, ejecuta el bundle JS compilado directamente en Dart
Paso 2. Compilar el bundle JS
Compila en los ejemplos nativos del repositorio hardware-js-sdk (consulta los directorios web/) y genera recursos web_dist/ correspondientes.
Paso 3. Cargar el bundle JS
Carga los recursos web_dist/ en Flutter (mediante WebView o un motor JS).
Paso 4. Implementar la conexión de mensajes
Expón enumerate/connect/disconnect/send/receive desde el código nativo a JS conservando las mismas firmas. Envía los bloques de notificaciones BLE sin modificar, como hexadecimal, a una cola por conexión que consume receive(uuid). El SDK gestiona el formato de tramas y el reensamblado de V1/V2.
Paso 5. Gestionar eventos de interfaz
Muestra diálogos nativos para solicitudes de entrada e instrucciones para avisos en el dispositivo. Solo las solicitudes de entrada reciben HardwareSDK.uiResponse; conserva su correlación de respuesta. Las confirmaciones de botones y los avisos de PIN exclusivo del dispositivo son notificaciones. Consulta conexión de la interfaz.
UUID de BLE
serviceUuid = 00000001-0000-1000-8000-00805f9b34fbwriteCharacteristic = 00000002-0000-1000-8000-00805f9b34fbnotifyCharacteristic = 00000003-0000-1000-8000-00805f9b34fb
Referencias
- Tramas del protocolo: Consulta Plugin de transporte de bajo nivel
- Eventos de interfaz: Eventos, PIN, Frase de contraseña
- Detalles de plataforma: BLE en iOS, BLE en Android
Tras conectarlo, el uso de la API de cadena es idéntico al de WebUSB: proporciona connectId y, cuando sea necesario, deviceId.