BTKit
使用点分表示法访问 Ruuvi BLE 设备:device.ruuvi?.tag
扫描 Ruuvi BLE 设备并使用点分表示法访问。参见教程。
特性
要求
- iOS 10.0+
- Xcode 12.0+
安装
CocoaPods
您可以通过将 BTKit
添加到您的 Podfile
中,使用 CocoaPods 安装它。
platform :ios, '10.0'
use_frameworks!
pod 'BTKit'
Swift Package Manager
您可以在 XCode/文件/Swift 包中添加包依赖...链接到此仓库。
使用示例
为了使其正常工作,请导入 BTKit
import BTKit
检查 iPhone/iPad 的蓝牙状态
view.isBluetoothEnabled = scanner.bluetoothState == .poweredOn
BTForeground.shared.state(self, closure: { (observer, state) in
observer.view.isBluetoothEnabled = state == .poweredOn
})
前台监听广告
BTForeground.shared.scan(self) { (observer, device) in
if let ruuviTag = device.ruuvi?.tag {
print(ruuviTag)
}
}
判断设备是否超出范围或已离线
BTForeground.shared.lost(self, options: [.lostDeviceDelay(10)], closure: { (observer, device) in
if let ruuviTag = device.ruuvi?.tag {
print("Ruuvi Tag is offline or went out of range")
}
})
监测特定设备广告
BTForeground.shared.observe(self, uuid: ruuviTag.uuid, options: [.callbackQueue(.untouch)]) { (observer, device) in
print("Specific RuuviTag is advertising")
}
连接到特定设备
if ruuviTag.isConnectable {
ruuviTag.connect(for: self, options: [.connectionTimeout(10)], connected: { observer, result in
switch result {
case .just:
print("just connected")
case .already:
print("was already connected")
case .disconnected:
print("just disconnected")
case .failure(let error):
print(error.localizedDescription)
}
}, heartbeat: { observer, device in
if let ruuviTag = device.ruuvi?.tag {
print(ruuviTag)
}
}, disconnected: { observer, result in
switch result {
case .just:
print("just disconnected")
case .already:
print("disconnected")
case .stillConnected:
print("still connected because of other callers")
case .failure(let error):
print(error.localizedDescription)
}
})
}
或使用 uuid
BTBackground.shared.connect(for: self, options: [.connectionTimeout(10)], connected: { observer, result in
switch result {
case .just:
print("just connected")
case .already:
print("was already connected")
case .disconnected:
print("just disconnected")
case .failure(let error):
print(error.localizedDescription)
}
}, heartbeat: { observer, device in
if let ruuviTag = device.ruuvi?.tag {
print(ruuviTag)
}
}, disconnected: { observer, result in
switch result {
case .just:
print("just disconnected")
case .already:
print("disconnected")
case .stillConnected:
print("still connected because of other callers")
case .failure(let error):
print(error.localizedDescription)
}
})
}
从可连接设备读取温度、湿度、压力日志
if let from = Calendar.current.date(byAdding: .minute, value: -5, to: Date()) {
ruuviTag.celisus(for: self, from: from) { (observer, result) in
switch result {
case .success(let values):
print(values)
case .failure(let error):
print(error.localizedDescription)
}
}
ruuviTag.humidity(for: self, from: from) { (observer, result) in
switch result {
case .success(let values):
print(values)
case .failure(let error):
print(error.localizedDescription)
}
}
ruuviTag.pressure(for: self, from: from) { (observer, result) in
switch result {
case .success(let values):
print(values)
case .failure(let error):
print(error.localizedDescription)
}
}
}
或使用 BTKit
如果只知道 uuid
BTBackground.shared.services.ruuvi.nus.celisus(for: self, uuid: ruuviTag.uuid, from: from, result: { (observer, result) in
switch result {
case .success(let values):
print(values)
case .failure(let error):
print(error.localizedDescription)
}
})
BTBackground.shared.services.ruuvi.nus.humidity(for: self, uuid: ruuviTag.uuid, from: from, result: { (observer, result) in
switch result {
case .success(let values):
print(values)
case .failure(let error):
print(error.localizedDescription)
}
})
BTBackground.shared.services.ruuvi.nus.pressure(for: self, uuid: ruuviTag.uuid, from: from, result: { (observer, result) in
switch result {
case .success(let values):
print(values)
case .failure(let error):
print(error.localizedDescription)
}
})
一次性读取完整日志
if let from = Calendar.current.date(byAdding: .minute, value: -5, to: Date()) {
ruuviTag.log(for: self, from: from) { (observer, result) in
switch result {
case .success(let logs):
print(logs)
case .failure(let error):
print(error.localizedDescription)
}
}
}
或使用 BTKit
如果只知道 uuid
BTBackground.shared.services.ruuvi.nus.log(for: self, uuid: ruuviTag.uuid, from: from, result: { (observer, result) in
switch result {
case .success(let logs):
print(logs)
case .failure(let error):
print(error.localizedDescription)
}
})
从设备断开连接
ruuviTag.disconnect(for: self) { (observer, result) in
switch result {
case .just:
observer.isConnected = false
case .already:
observer.isConnected = false
case .stillConnected:
observer.isConnected = true
case .failure(let error):
observer.isConnected = false
print(error.localizedDescription)
}
}
或使用 BTKit
如果只知道 uuid
BTBackground.shared.disconnect(for: self, uuid: ruuviTag.uuid) { (observer, result) in
switch result {
case .just:
observer.isConnected = false
case .already:
observer.isConnected = false
case .stillConnected:
observer.isConnected = true
case .failure(let error):
observer.isConnected = false
print(error.localizedDescription)
}
}
贡献
我们期待您对 BTKit 的贡献,更多信息请查看 LICENSE
文件。
元数据
林纳特·尼基耶夫 - [email protected]
遵循BSD许可协议。更多信息请参阅LICENSE
文件。