У меня есть приложение для iOS и macOS, которое интенсивно использует Core Bluetooth. Основная функциональность приложения включает подключение центрального устройства (CBCentralManager
) к периферийному устройству (CBPeripheralManager
), получение некоторых данных, а затем отключение. Любое устройство, будь то MacOS или iOS, может выступать в качестве центрального или периферийного устройства в зависимости от того, кому нужны данные.
Сначала я подумал, что возникла проблема с моим кодом, но после тестирования приложения с двумя устройствами iOS, одно из них может подключаться и извлекать данные с периферийного устройства, даже если периферийное устройство заблокировано и приложение находится в фон. Теперь в соответствии с документами, касающимися фоновой рекламы на iOS в разделе «Режим фонового выполнения Bluetooth-периферии» , это как-то ожидаемо:
... они могут быть обнаружены только устройством iOS, которое явно сканирует их.
Есть ли способ заставить приложение macOS обнаруживать периферийные устройства, даже если они находятся на заднем плане? Я уверен, что написанный мной код верен, потому что он одинаков для iOS и MacOS.
Обновление 1
Я считаю, что это возможно, просто не зная, как подойти к вопросу. Используя Apple Explorer в MacOS, я могу найти нужное устройство и посмотреть и прочитать данные для своей пользовательской службы.
Этот вывод подтверждается журналами с моего устройства iOS о запросах на чтение, поступивших от моего peripheralManager(CBPeripheralManager, didReceiveRead: CBATTRequest)
.