Gormsson 1.3.0

Gormsson 1.3.0

HubKit 维护。



Gormsson 1.3.0

  • Damien NOËL DUBUISSON 和 Loïc GRIFFIÉ

Documentation Language: 5 Platform: iOS 11+ Carthage Compatible CocoaPods Codacy Badge Build Status License: MIT GitHub contributors Donate

Gormsson

哈罗德“蓝牙”戈姆松是丹麦和挪威的国王。

要求

  • iOS 9.1+
  • Xcode 10.2+

安装

使用 CocoaPods 与 Podfile

pod 'Gormsson'

打开您最喜欢的终端,转到项目根路径

pod install

使用 Carthage 与 Cartfile

github "MoveUpwards/Gormsson"

打开您最喜欢的终端,转到项目根路径并运行

carthage update

Swift 包管理器

Swift 包管理器是一个自动化 Swift 代码分发的工具,已集成到 swift 编译器中。它处于早期开发阶段,但 Alamofire 支持在支持的平台中使用它。

一旦设置了 Swift 包,添加 Alamofire 作为依赖项就像将其添加到 Package.swiftdependencies 值一样简单。

dependencies: [
.package(url: "https://github.com/MoveUpwards/Gormsson.git", from: "0.8.0")
]

使用方法

Hear Rate Monitor Demo

启动服务

Gormsson 的 init 方法让你定义一个特定的队列以避免在 主线程 上运行。你也可以为 CoreBluetooth 管理器提供可选的 Dictionary

let manager = Gormsson(queue: DispatchQueue(label: "com.ble.manager", attributes: .concurrent))

开始扫描外围设备

扫描到的每个外围设备都会在 didDiscover 块中返回,包括广告数据。查看文档以查看所有可用的 GattAdvertisement 属性。

以下示例中,我们过滤提供 HeartRate 服务的设备。

manager.scan([.heartRate], didDiscover: { [weak self] cbPeripheral, advertisementData in
    print(cbPeripheral)
    print(advertisementData.localName)
    print(advertisementData.txPowerLevel)
    print(advertisementData.isConnectable)
})

你可以自定义广告数据变量。参见 自定义广告数据

连接外围设备

连接外围设备时,库会自动停止扫描附近的设备。

manager.connect(cbPeripheral)

读取特征

假设您想读取由您最喜欢的心率监测器传感器提供的Body Sensor Location,您只需请求管理器读取.bodySensorLocation特征,它将返回一个类型为BodySensorLocationEnum的值。

manager.read(.bodySensorLocation, success: { value in
    guard let location = value as? BodySensorLocationEnum else { return }

    print("\(location.description)")
}, error: { error in
    print(error ?? "Unknown error")
})

订阅特征更新

如果您想获取当前心率并且获得所有更新值,您可以使用特征的Notify能力。为此,操作就像简单的读取一样简单。

现在,每当值改变时,该块将触发。

manager.notify(.heartRateMeasurement, success: { value in
    guard let rate = (value as? HeartRateMeasurementType)?.heartRateValue else { return }

    print("\(rate)")
}, error: { error in
    print(error ?? "Unknown error")
})

写入特征

如果您想向特征写入值,操作相当直接。您提供要使用的特征以及要写入的给定值,并且可选地提供BLE写入类型。默认是.withResponse

manager.write(.setState, value: UInt8(1), type: .withoutResponse, success: {
    print("set state success")
}, error: { error in
    print("set state failure:", error ?? "nil")
})

自定义服务

为了使用自定义服务,您只需创建一个自定义的GattService

let gpsService = GattService.custom("C94E7734-F70C-4B96-BB48-F1E3CB95F79E")

然后您可以使用这个自定义服务来过滤扫描外部设备。

manager.scan([gpsService], didDiscover: { [weak self] peripheral, advertisementData in

})

自定义特征

为了使用符合CharateristicProtocol的自定义特征类。

public protocol CharacteristicProtocol {
    var service: GattService { get }
    var uuid: CBUUID { get }
    var format: DataInitializable.Type { get }
}

以下是一个自定义特征的示例,它将提供已记录GPS会话的数量。

public final class GPSSessionCount: CharacteristicProtocol {
    public var uuid: CBUUID {
        return CBUUID(string: "C94E0001-F70C-4B96-BB48-F1E3CB95F79E")
    }

    public var service: GattService {
        return gpsService
    }

    public var format: DataInitializable.Type {
        return UInt.self
    }
}

然后您可以使用它与读取、notify或写入BLE命令一起使用。

manager.read(GPSSessionCount(), success: { value in
    print("GPSSessionCount read:", value as? UInt ?? "nil")
}, error: { error in
    print(error ?? "Unknown error")
})

自定义广告数据

如果您的BLE从属设备具有自定义制造商数据,则可以向GattAdvertisement类添加扩展。

假设您提供了制造商数据中的从属设备MAC地址。

extension GattAdvertisement {
    /// An object containing the manufacturer data of a peripheral.
    open var macAddress: String? {
        let gpsService = GattService.custom("C94E7734-F70C-4B96-BB48-F1E3CB95F79E")
        guard let data = serviceData?[gpsService.uuid] else { return nil }
        return [UInt8](data).map({ String(format: "%02hhx", $0).uppercased() })
            .reversed()
            .joined(separator: ":")
    }
}

文档

请查看文档以检查Gormsson库可以提供的所有功能。

贡献

在向项目提交Pull Request之前,请阅读我们的贡献指南

支持

有关即将推出的版本的更多信息,请参阅我们的路线图

社区支持

有关使用Strapi的一般帮助,请参考官方Gormsson文档。如有更多帮助,您可以使用以下渠道之一提问

专业支持

我们提供全面解决方案,以获得更好的更快的结果。我们总是寻找下一项挑战:咨询、培训、开发移动和Web解决方案等。

给我们发邮件,看看我们如何帮助你。

许可

折叠单元格在MIT许可下发布。有关详细信息,请参阅LICENSE

如果您在项目中使用开源库,请确保提及并链接至www.moveupwards.dev