CBCentralManager не вызывает метод didDiscoverPeripheral, когда iPhone заблокирован

Я работаю над приложением, которое сканирует определенное периферийное устройство, которое обнаруживает, что оно должно отправлять небольшое количество данных.

Приложение работает на переднем плане, а также в фоновом режиме. Я также добавил этот код в плисте

UIBackgroundModes bluetooth-central Когда iPhone заблокирован и периферия начинает рекламу, он не вызывает

func centralManager(central: CBCentralManager!, didDiscoverPeripheral peripheral: CBPeripheral!, advertisementData: [NSObject : AnyObject]!, RSSI: NSNumber!) {

Я провел некоторое исследование, но не смог найти ответ.

Любая помощь приветствуется.

Спасибо

1 ответ

Решение

Сохранить обнаруженное CBPeripheral пример.

var activePeripheral: CBPeripheral!

Или добавив его в массив. Если вы обнаруживаете более одного периферийного устройства.

var knownPeripherals = [CBPeripheral]()

Таким образом, вы можете подключиться к тому, что CBPeripheral вам нужно (если оно доступно, очевидно).

Этот метод делегата вызывается, когда периферийное устройство отключено optional func centralManager(_ central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error error: NSError?), Вы можете попробовать использовать его в своих интересах, пытаясь восстановить соединение с периферийным устройством.

И, наконец, вы должны проверить справку Apple для выполнения долгосрочных действий в фоновом режиме.

Надеюсь, поможет!

Другие вопросы по тегам