Flutter原生蓝牙
本页基于《传输插件(Low-level)》与消息协议,建议先阅读接口与 64 字节帧格式。
如果 Flutter 应用希望通过手机蓝牙直接连接 UKey Wallet,可以把 JS SDK 打包后放入 WebView 或 JS 引擎运行,再用 Dart/原生插件把 BLE 数据转发给 SDK 的底层适配器。
第1步:选运行时
- WebView:兼容性最好,桥接接口也更接近 Android/iOS 原生外壳。
- JS 引擎:例如
flutter_js,适合不想引入完整 WebView 的场景,但需要自行验证运行时兼容性。
第2步:构建JS
在 hardware-js-sdk 的原生参考中构建 Web 资源,通常会从 web/ 目录生成 web_dist/。该产物包含 SDK 调用逻辑和与原生桥通信的代码。
第3步:加载JS
将 web_dist/ 作为 Flutter 资源打入应用,并在 WebView 或 JS 引擎中加载。初始化完成后,Flutter 层再把设备列表、连接状态和 BLE 通知传给 JS。
第4步:消息桥接
向 JS 暴露 enumerate、connect、disconnect、send、receive 等底层方法,并保持方法签名一致。BLE 通知通常按 64 字节分片返回,Flutter/原生层负责转发,JS 侧再按协议重组十六进制负载。
第5步:处理UI
PIN、Passphrase 和设备确认都应由 Flutter 页面展示清晰的原生弹窗。用户输入或确认后,再用 ukeySdk.uiResponse 把结果回传给 SDK 实例。
BLE标识
primaryServiceUUIDString = ["00000001", "0000", "1000", "8000", "00805f9b34fb"].join("-")txCharacteristicUUIDString = ["00000002", "0000", "1000", "8000", "00805f9b34fb"].join("-")rxCharacteristicUUIDString = ["00000003", "0000", "1000", "8000", "00805f9b34fb"].join("-")
相关项
- 帧规格:传输插件(Low-level)
- 事件流:事件说明,PIN,Passphrase
- 其他平台:iOS BLE,Android BLE
连接建立后,链相关 API 的调用方式与 WebUSB 保持一致:传入 connectId,必要时再传入 deviceId。