BLE в iOS с VIPER
Я разрабатываю приложение для iOS BLE, и все работает отлично. Я обрабатываю BLE в одноэлементном классе, который вызывает свой метод discoverPeripheral()
в контроллере вида viewDidAppear()
. Оттуда я подключаюсь к устройствам и обмениваюсь данными.
Теперь я пытаюсь реализовать архитектуру VIPER в своем приложении, и я не могу точно понять, где будет размещена эта часть BLE. Потому что в данный момент мой код BLE активируется при отображении вида. Я придумал следующую схему: поместите сканирование ble в presenter, и как только представление войдет в память, попросите presenter начать сканирование. Ведущий попросит BLE singleton сканировать с помощью соответствующих UUID и, как только данные будут получены, проинформирует Interactor, чтобы сохранить их в БД,а затем обновить пользовательский интерфейс.
Это мой первый проект с VIPER, и я был бы очень признателен за любые комментарии или предложения. Спасибо!1 ответ:
Если кто-нибудь забредет сюда в поисках той же проблемы, вот что я в итоге сделал:
Я разместил вызовы к Бле синглтону в интеракторе. Поэтому, когда пользователь нажимает на пользовательский интерфейс для сканирования ble,
Затем ведущий вызываетpresenter.startBleScan()
иinterface.showUpdatingBleDevices()
вызываются в пользовательском интерфейсе.interactor.startBleScan()
.Взаимодействующий обращается к синглетному классу и вызывает
presenter.didReceiveNewBleDevices(count: 5)
ведущегоПосле этого ведущий вызывает
interface.hideUpdateBle()
иinterface.showNewDevices