BLE в iOS с VIPER


Я разрабатываю приложение для iOS BLE, и все работает отлично. Я обрабатываю BLE в одноэлементном классе, который вызывает свой метод discoverPeripheral() в контроллере вида viewDidAppear(). Оттуда я подключаюсь к устройствам и обмениваюсь данными.

Теперь я пытаюсь реализовать архитектуру VIPER в своем приложении, и я не могу точно понять, где будет размещена эта часть BLE. Потому что в данный момент мой код BLE активируется при отображении вида. Я придумал следующую схему: поместите сканирование ble в presenter, и как только представление войдет в память, попросите presenter начать сканирование. Ведущий попросит BLE singleton сканировать с помощью соответствующих UUID и, как только данные будут получены, проинформирует Interactor, чтобы сохранить их в БД,а затем обновить пользовательский интерфейс.

Это мой первый проект с VIPER, и я был бы очень признателен за любые комментарии или предложения. Спасибо!
1 2

1 ответ:

Если кто-нибудь забредет сюда в поисках той же проблемы, вот что я в итоге сделал:

Я разместил вызовы к Бле синглтону в интеракторе. Поэтому, когда пользователь нажимает на пользовательский интерфейс для сканирования ble, presenter.startBleScan() и interface.showUpdatingBleDevices() вызываются в пользовательском интерфейсе.

Затем ведущий вызывает interactor.startBleScan().

Взаимодействующий обращается к синглетному классу и вызывает presenter.didReceiveNewBleDevices(count: 5) ведущего

После этого ведущий вызывает interface.hideUpdateBle() и interface.showNewDevices