Выберите конкретную c услугу при сканировании устройства.
. Я сделал программу, в которой хочу сканировать устройство с указанной c услугой (мое устройство представляет собой термометр "SHT31" и эта служба работает от батареи "UUID: 180F"), но когда я запускаю эту программу на моем iPhone, она не сканирует устройство. Принимая во внимание, что «withServices: nil» сканирует устройство. У вас есть решение?
Мой код:
import CoreBluetooth
class BLEConnection: NSObject, CBCentralManagerDelegate, CBPeripheralDelegate {
var centralManager: CBCentralManager!
var myPeripheral: CBPeripheral!
let batteryServiceCBUUID = CBUUID(string: "0x180F")
func startCentralManager() {
self.centralManager = CBCentralManager(delegate: self, queue: nil)
}
func centralManagerDidUpdateState(_ central: CBCentralManager) {
switch (central.state) {
case .unsupported:
print("BLE is Unsupported")
break
case .unauthorized:
print("BLE is Unauthorized")
break
case .unknown:
print("BLE is Unknown")
break
case .resetting:
print("BLE is Resetting")
break
case .poweredOff:
print("BLE is Powered Off")
break
case .poweredOn:
print("BLE powered on")
central.scanForPeripherals(withServices: [batteryServiceCBUUID], options: nil)
break
@unknown default:
break
}
}
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
if let pname = peripheral.name {
// print(pname)
if pname == "Smart Humigadget" {
self.centralManager.stopScan()
self.myPeripheral = peripheral
self.myPeripheral.delegate = self
self.centralManager.connect(peripheral, options: nil)
print("\(pname) is connected")
}
}
}
func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral) {
self.myPeripheral.delegate = self
self.myPeripheral.discoverServices(nil)
}
}