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