GATT

Swift Platform Release License

Swift 的蓝牙通用属性配置文件 (GATT)

安装

GATT 可以作为 Swift Package Manager 包使用。要使用它,请在你的 Package.swift 中添加以下依赖项

.package(url: "https://github.com/PureSwift/GATT.git", branch: "master"),

并将 GATT 添加到你的目标依赖项。然后你可以 import GATT 来访问 GATT 功能。

平台

平台 角色 后端
macOS, iOS, watchOS, tvOS, visionOS 中心设备 (Central), 外围设备 (Peripheral) CoreBluetooth DarwinGATT
Linux 中心设备 (Central), 外围设备 (Peripheral) BlueZ BluetoothLinux, GATT
Android 中心设备 (Central) Java 本地接口 (Java Native Interface) AndroidBluetooth
WebAssembly 中心设备 (Central) 蓝牙 Web API BluetoothWeb
Pi Pico W 外围设备 (Peripheral) BlueKitchen BTStack BTStack
ESP32 外围设备 (Peripheral) Apache NimBLE NimBLE
nRF52840 外围设备 (Peripheral) Zephyr SDK Zephyr

用法

外围设备 (Peripheral)

import Bluetooth
#if canImport(Darwin)
import DarwinGATT
#elseif os(Linux)
import BluetoothLinux
#endif

#if os(Linux)
typealias LinuxPeripheral = GATTPeripheral<BluetoothLinux.HostController, BluetoothLinux.L2CAPSocket>
guard let hostController = await HostController.default else {
    fatalError("No Bluetooth hardware connected")
}
let serverOptions = GATTPeripheralOptions(
    maximumTransmissionUnit: .max,
    maximumPreparedWrites: 1000
)
let peripheral = LinuxPeripheral(
    hostController: hostController,
    options: serverOptions,
    socket: BluetoothLinux.L2CAPSocket.self
)
#elseif canImport(Darwin)
let peripheral = DarwinPeripheral()
#else
#error("Unsupported platform")
#endif

// start advertising
try await peripheral.start()

中心设备 (Central)

import Bluetooth
#if canImport(Darwin)
import DarwinGATT
#elseif os(Linux)
import BluetoothLinux
#endif

#if os(Linux)
typealias LinuxCentral = GATTCentral<BluetoothLinux.HostController, BluetoothLinux.L2CAPSocket>
let hostController = await HostController.default
let central = LinuxCentral(
    hostController: hostController,
    socket: BluetoothLinux.L2CAPSocket.self
)
#elseif canImport(Darwin)
let central = DarwinCentral()
#else
#error("Unsupported platform")
#endif

// start scanning
let stream = try await central.scan(filterDuplicates: true)
for try await scanData in stream {
    print(scanData)
    stream.stop()
}

文档

在此阅读文档。文档可以使用 DocC 生成。

许可证

GATT 是在 MIT 许可证下发布的。有关详细信息,请参阅 LICENSE。