Ответ 1
Фоновая реклама возможна, если вы добавили фоновый режим bluetooth-peripheral
в приложение. Как только вы это сделаете, ваше приложение будет продолжать получать обратные вызовы, даже если они указаны.
Реклама - хитрый зверь, поскольку Apple реализовала несколько оптимизаций, чтобы снизить энергопотребление, и это снижает качество рекламы, как только приложение будет основано. А именно: ставка резко снижается, рекламируемые услуги не включены и местное имя также не включено. После того, как приложение вернется на передний план, эти ограничения недействительны.
В общем случае для такого типа фоновой операции приложение должно быть запущено. С iOS 7 был реализован процесс восстановления, который позволяет ОС действовать от имени приложения, когда он прекращается и восстанавливается, когда какая-либо передача или другая операция неизбежны. Для этого необходимо добавить ключ восстановления к параметрам инициализации CBPeripheralManager
/CBCentralManager
. Запуск приложения один раз по-прежнему требуется, но после этого iOS будет продолжать действовать как фасад BLE по отношению к центрам/периферийным устройствам.
UPDATE. Я запустил цикл в списке bluetooth-dev от Apple, а также нашел, что основные менеджеры Bluetooth были объявлено неспособным восстановить после перезагрузки. Это не описано ни в одной документации, но, вероятно, упоминалось в видео WWDC. Мы должны подать ошибку и скопировать ее, чтобы повысить осведомленность Apple.