Вот мой сценарий:Swift 3: Как сканировать периферийные устройства в фоновом режиме?
Я подключаюсь к двум периферийным устройствам, устанавливаю свое приложение в фоновом режиме и начинаю уходить с периферийными устройствами, пока не потеряет подключение к моему приложению. Возвращаясь, они не соединяются снова, когда добираются.
Когда я выполняю тот же эксперимент, когда приложение работает на переднем плане, никаких проблем не возникает - при приближении периферийных устройств ближе к iPhone приводит к повторному подключению.
Однако, я вижу на консоли, что, когда периферийные устройства теряют соединение, вызывается метод DidDisconnectPeripheral
. Проблема заключается в том, что сканирование не вызывается внутри этого метода
func centralManager(_ central: CBCentralManager, didDisconnectPeripheral peripheral: CBPeripheral, error: Error?) {
numberOfTagsSending = numberOfTagsSending - 1
numberOfConnectedTags = numberOfConnectedTags - 1
print("Tag was disconnected. Start scanning.")
synchronizer.alreadySynced = false
central.scanForPeripherals(withServices: arrayOfServices, options: [CBCentralManagerScanOptionAllowDuplicatesKey : true])
}
Я прочитал this ответ и сделал все точно так же, к сожалению, она не работает.
Заранее спасибо
Пробовал ли вы называть эту функцию в 'Application: didEnterBackground'? – KSigWyatt
Ну, честно говоря, я этого не делал. Но я никогда не нашел никакой информации, которую я должен явно вызвать из AppDelegate. – DCDC
Попробуйте это и посмотрите, работает ли она в фоновом режиме. Если это не так, это должно быть проблемой с вашим методом 'central.scanForPeripherals()' не настроен как вы указали в своем вопросе. – KSigWyatt