Я разрабатываю приложение для iOS и OS X Yosemite, которое использует CoreBluetooth для iOS и IOBluetooth для Mac. Приложение для iOS играет «центральную» роль, а приложение для Mac — «периферийную».
По сути, приложение iOS (центральное) начинает сканирование, чтобы найти периферийные устройства, и когда оно находит данные Mac, рекламирующие периферийные устройства, центральное подключается к нему и может обнаружить его услуги и характеристики.
Моя проблема в том, что иногда, я не знаю почему, приложение iOS начинает сканирование, чтобы найти рекламу Mac, и когда оно ее находит (этот шаг работает все время), оно пытается подключиться к ней, но безуспешно.
Чтобы снова успешно подключиться к периферийному устройству, мне нужно выключить, а затем включить Bluetooth с помощью кнопки iOS.
Еще одна странная вещь: представьте, что центральный находится в той же ситуации (безуспешно пытается подключиться). В OS X, если я щелкну значок «Сеть» (с символом Wi-Fi) в строке состояния системы, он отобразит список всех доступных сетей Wi-Fi, и когда он добавит в список мой iPhone как «Личная точка доступа», в это время центральный (который находится на iPhone) удается подключиться к периферийному устройству (Mac).
Из-за этой проблемы использование приложения сильно скомпрометировано, потому что случайно iPhone не сможет подключиться к Mac.
Я провел много дней в Интернете (Google, Stackoverflow, ...), чтобы найти похожие случаи. Я прочитал много статей и пробовал много вещей, таких как остановка сканирования и запуск его снова, если соединение не удалось, например, через 10 секунд.
Не стесняйтесь сказать мне, если мой вопрос не ясен. Я буду обновлять его, если это необходимо.
Заранее большое спасибо за вашу помощь. Мне действительно нужно найти способ исправить это.