1.8 KiB
1.8 KiB
DuooomiBleWrapper
该目录由 pnpm build:ios 生成,是可以直接交付给 iOS 原生宿主工程使用的 Swift Package。
目录内容
Frameworks/DuooomiBleSDK.xcframeworkFrameworks/hermesvm.xcframeworkSources/DuooomiBleWrapper/DuooomiBleManager.swiftSources/DuooomiBleWrapper/DuooomiBleRuntime.swift
宿主 App 接入步骤
- 将
dist/ios/DuooomiBleWrapper作为本地 Swift Package 引入宿主工程。 - 在宿主 App 的一个长期存在的容器视图里启动 Brownfield 运行时。
- 运行时启动完成后,通过
DuooomiBleManager.shared调用蓝牙能力。
最小使用示例
try DuooomiBleRuntime.shared.start(in: view)
Task {
let result = try await DuooomiBleManager.shared.connect(deviceId: "device-id")
print(result)
}
如果是扫描,仍然沿用监听方式:
DuooomiBleManager.shared.onDiscoveredDevicesChange = { devices in
print(devices)
}
DuooomiBleManager.shared.scan()
如果宿主需要显式初始化 Brownfield
如果你的宿主工程不能被 DuooomiBleRuntime 自动识别出 ReactNativeHostManager 或 ReactNativeView,可以显式传入初始化逻辑:
try DuooomiBleRuntime.shared.start(
in: view,
initializeHost: {
ReactNativeHostManager.shared.initialize()
},
createReactNativeView: {
ReactNativeView()
}
)
说明
DuooomiBleRuntime负责启动 Expo Brownfield 对应的 RN/JS 运行时DuooomiBleManager的大部分命令方法为async throws,例如connect、bind、transferFilescan/stopScan仍然保持事件监听方式DuooomiBleManager也会订阅ble/sdk/BleSDK.ts中定义的 shared state 并转发给宿主
如果只调用 DuooomiBleManager 而没有先启动 DuooomiBleRuntime,JS 侧的 bleSDK.initialize() 不会执行,消息也不会被处理。