Bluetonium 2.1.0

Bluetonium 2.1.0

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最新发布2017年7月
SwiftSwift 版本3.0
SPM支持 SPM

Bas van Kuijck 维护。



  • Dick Verbunt,Dominggus Salampessy 和 Bas van Kuijck

Bluetonium: Bluetooth library in Swift

Bluetonium 是一个 Swift 库,它使与蓝牙设备的通信变得简单。

forthebadge forthebadge forthebadge

功能

  • [x]🎲服务和特征映射
  • [x]👓默认数据转换器
  • [x]🔧读取和写入外围设备
  • [x]🌔后台模式
  • [x]📻扫描和连接到外围设备
  • [x]🦅Swift 3 & 4

要求

  • iOS 8.0+
  • Xcode 7.2+

用法

获取设备

Manager 将处理搜索设备和连接到设备。

import Bluetonium

let manager = Manager()
manager.delegate = self
manager.startScanForDevices()

如果找到设备,您将通过 func manager(_ manager: Manager, didFindDevice device: Device) 代理调用收到通知。您也可以在您管理器的 foundDevices 数组中获取所有找到的设备。

连接到设备

连接到设备很简单。

manager.connect(with: device)

device 来自 foundDevices 数组的设备。

创建和注册 ServiceModel

ServiceModel 子类将代表一个服务,所有属性都表示特征。

此示例表示 电池服务

class BatteryServiceModel: ServiceModel {
    enum Characteristic : String {
        case batteryLevel = "2A19"
    }

    var batteryLevel: UInt8 = 0
    
    override var serviceUUID:String {
        return "180F"
    }
    
    override func mapping(_ map: Map) {
        batteryLevel <- map[Characteristic.batteryLevel.rawValue]
    }
    
}

注册 ServiceModel 子类。确保在实际连接设备之前做到这一点。

let batteryServiceModel = BatteryServiceModel()

func manager(_ manager: Manager, willConnectToDevice device: Device) {
    device.register(serviceModel: batteryServiceModel)
}


ServiceModel 子类

ServiceModel 子类将代表一个服务,所有属性都表示特征。与外围设备交互仅在特征通过 func characteristicBecameAvailable(withUUID UUID: String) 函数成为可用后才能执行。
或者当 serviceReady 布尔值设置为 true 时。

建议创建一个包含UUID静态属性的struct,并与之配置ServiceModel,这样您的应用程序就不需要在不同的地方硬编码UUID,并通过这种方式避免错误。(请参阅示例:项目中的HeartRateServiceModel)

读取

batteryServiceModel.readValue(withUUID: "2A19")

// Or with completion
batteryServiceModel.readValue(withUUID: "2A19") { value in
    print(value)
}

写入

batteryServiceModel.batteryLevel = 10
batteryServiceModel.writeValue(withUUID: "2A19")

自定义数据转换器

可能您的特征具有自定义的数据格式,或者具有尚未支持的数据格式。然后,您可以为此属性创建自己的自定义数据转换器。

自定义数据转换器需要符合具有两个函数的DataTransformer协议。

class HeartRateDataTransformer: DataTransformer {
    
    func transform(dataToValue data: Data?) -> MapValue {
        // Used when reading from the characteristic.
      // Transform Data to your property MapValue.
    }
    
    func transform(valueToData value: MapValue?) -> Data {
        // Used when writing to the characteristic.
      // Transform your property MapValue to Data.
    }
    
}

要注册您自定义的数据转换器,您可以将其添加到映射函数中

func mapping(_ map: Map) {
    heartRate <- (map["2A37"], HeartRateDataTransformer())
}

为一个特征设置通知

ServiceModel有一个函数,可以让你为外部设备上的值变化注册。当你为你一个特征返回true时,它将自动更新属性。

func registerNotifyForCharacteristic(withUUID UUID: String) -> Bool

贡献

我们欢迎反馈和pull requests。让我们让这个列表更长吧

许可

Bluetonium是在MIT许可下发布的。详细信息请参阅LICENSE。