Как продолжить действия BLE на следующем контроллере представления

Я разрабатываю приложение, которое сканирует близлежащие устройства BLE, подключается к одному из них и взаимодействует с подключенным устройством. Я попытался сделать это в 2 контроллерах представления, контроллер-A и контроллер-B. Контроллер-A будет сканировать близлежащие устройства и подключаться к одному из них. Контроллер-B будет обмениваться данными с подключенным устройством. Контроллер-A расширяет CBCentralManagerDelegate. Моя проблема: когда мое приложение переключается на просмотр контроллера B, оно не получает ответных вызовов от CBCentralManager. Я должен инициализировать CBCentralManager снова в контроллер-B. Я также должен отключить устройство от контроллера-A и повторно подключиться к контроллеру-B. Есть ли лучший способ сделать это? Благодарю.

1 ответ

Решение

Поместите свой код, связанный с BLE, в централизованное место, например, BLEMaganer (лучше) или AppDelegate (так). Так что controllerA и controllerB могут использовать один и тот же экземпляр centrolManager.

Например, в настоящее время у вас есть свойство centralManager в controllerA, и реализовать его делегат в controllerA. Вы получаете доступ к CentralManager с помощью controllerA.centralManager,

Переместить centralManager собственность на AppDelegate, а также другой связанный код. Затем вы можете получить доступ к экземпляру centrolManager

(UIApplication.sharedApplication().delegate as! AppDelegate).centralManager.
Другие вопросы по тегам