CBCentral не может найти службу периферийного устройства, если Bluetooth не перезапущен

У меня есть два приложения, взаимодействующие через CoreBluetooth, iOS и Today Extension (периферийное) и OSX (центральное).

1 - Процесс установки (приложение iOS x приложение OSX): они подключаются, обмениваются сохраненными данными и отключаются.

2 - Использование основной функции приложения (приложение iOS Today Extension x OSX): они подключаются, обмениваются данными и отключаются.

Если я не выключу и снова не включу bluetooth моего iPhone между шагами 1 и 2, приложение OSX найдет iPhone, подключится, но найдет 0 служб из Today Extension после того, как в приложении OSX вызывается периферийное устройство.

Если я выключу и включу Bluetooth, все пойдет как положено. Что бы это могло быть? Любая помощь очень приветствуется. Спасибо!

ОБНОВЛЕНИЕ: после использования LightBlue в OSX я смог подтвердить, что, если я не перезапущу Bluetooth, служба UUID, использованная на шаге 1, будет продолжать рекламироваться, только когда я перезапущу Bluetooth, появится UUID, использованный на шаге 2.


person Lee Andrew    schedule 27.09.2014    source источник


Ответы (1)


У меня такая же проблема, сначала думал, что это моя вина, но потом оказалось, что это действительно странно.

Я написал аналогичную программу, используя iPhone для подключения к маяку BLE и используя [CBPeripheral readRSSI] для получения уровня сигнала. Все идет гладко, когда маяк BLE впервые подключается к моему iPhone. Но если он отключился и снова подключится, метод readRSSI больше не будет вызываться. Только после того, как я перезапущу Bluetooth на своем iPhone, проблема будет решена.

Я запускаю программу в режиме отладки, шаг за шагом, к моему удивлению, я не обнаружил никаких проблем. Даже если я так много раз отключаюсь и снова подключаюсь, метод readRSSI все еще может быть вызван правильно.

Надеюсь, это может помочь. Я тоже жду ответа на эту странную вещь.

person Tom Ou    schedule 28.09.2014
comment
Пожалуйста, дайте мне знать, если вы найдете решение - person Lee Andrew; 29.09.2014