Swift 3 - CoreBluetooth - Фон - параметр массива
У меня есть следующие настройки для запуска сканирования Bluetooth в фоновом режиме, синглтон:
class BluetoothService: NSObject {
var manager: CBCentralManager!
var characteristic: CBCharacteristic!
var peripheral: CBPeripheral!
let peripheral_name: String = "mygadget"
let service_uuid_array: [CBUUID] = [CBUUID(string: "85948G74-245Z-4861-G54R-198F368E380M")]
static let sharedInstance = BluetoothService()
private override init() {
super.init()
manager = CBCentralManager(delegate: self, queue: nil)
}
}
extension BluetoothService: CBCentralManagerDelegate {
func centralManagerDidUpdateState(_ central: CBCentralManager) {
if (central.state == CBManagerState.poweredOn) {
self.manager?.scanForPeripherals(withServices: service_uuid_array, options: nil)
}
}
func centralManager(_ central: CBCentralManager, didDiscover peripheral: CBPeripheral, advertisementData: [String : Any], rssi RSSI: NSNumber) {
if (peripheral.name == self.peripheral_name) {
self.manager.stopScan()
self.peripheral = peripheral
self.peripheral.delegate = self
self.manager.connect(peripheral, options: nil)
}
}
func centralManager(_ central: CBCentralManager, didConnect peripheral: CBPeripheral) {
peripheral.discoverServices(nil)
}
func centralManager(_ central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: Error?) {
if (central.state == CBManagerState.poweredOn) {
self.manager?.scanForPeripherals(withServices: service_uuid_array, options: nil)
}
}
func centralManager(_ central: CBCentralManager, didFailToConnect peripheral: CBPeripheral, error: Error?) {
}
}
extension BluetoothService: CBPeripheralDelegate {
func peripheral(_ peripheral: CBPeripheral, didDiscoverServices error: Error?) {
}
func peripheral(_ peripheral: CBPeripheral, didDiscoverCharacteristicsFor service: CBService, error: Error?) {
}
func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: CBCharacteristic, error: Error?) {
}
func peripheral(_ peripheral: CBPeripheral, didUpdateNotificationStateFor characteristic: CBCharacteristic, error: Error?) {
}
}
Я также активировал фоновые режимы и активировал "Использование аксессуаров Bluetooth LE"
Когда я использую
self.manager?.scanForPeripherals(withServices: nil, options: nil)
вместо
self.manager?.scanForPeripherals(withServices: service_uuid_array, options: nil)
он отлично работает на переднем плане, но я не могу заставить его работать, когда я передаю этот массив... почему?
мне нужно использовать "service_uuid_array", чтобы заставить его работать в фоновом режиме..
Кто-нибудь может мне помочь с этим вопросом?
Спасибо и привет!