1

В последнее время я играл с картой bluetooth и получил достаточно сильные знания, чтобы начать создавать приложение. Единственная проблема заключается в том, что все примеры, которые я нашел, и все, что я сделал, состоят в том, что основной код ядра bluetooth находится внутри того же файла, что и UIView, с которым пользователь взаимодействует.Рекомендации по использованию CoreBluetooth Framework

Я хотел бы, чтобы мое будущее приложение имело несколько видов, в которых происходит сканирование BLE на фоне. Сначала я думал о создании объекта с именем, похожим на bleDeviceFinder, и передавать этот объект через каждый вид. Однако, подумав об этом, я понял, что если я хочу, чтобы что-то произошло в текущем представлении, мне нужна функция didDiscoverPeripheral, чтобы иметь прямой доступ к объектам UIView, на которые он должен повлиять.

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

ответ

2

Quasi singleton BTLEManager, который вы передаете в приложении. Он отправляет NSNotifications для таких событий, как обнаружение, и ваши ViewControllers наблюдают эти уведомления. Истина (т. Е. Список обнаруженных устройств) остается в BTLEManager. Как только viewController получил такое уведомление, он запрашивает BTLEManager для списка текущих устройств, а затем viewController соответствующим образом изменяет ваши представления. Представления никогда не должны напрямую обращаться к BTLEManager.

Так я и сделал бы это.

Смежные вопросы