Страницы

Поиск по вопросам

четверг, 5 декабря 2019 г.

Как использовать аналитику в Чистой Архитектуре?

#android #архитектура


Мы пишем приложение, используя подход Clean Architecture (примерно так). 

Сейчас перед нами стоит задача: добавить аналитику. Причём, как Яндекс метрику, так
и Google Analytics. Мы написали свой менеджер аналитики, вызовы публичного апи которого
отправляют данные в обе системы.

Два вопроса:


Какой компонент (вью, презентер, интерактор, репозиторий) должен заниматься отправкой
событий?
Как организовать отправку "сложных" сообщений? То есть таких, которые зависят сразу
от нескольких параметров, например, от того, через какие экраны пользователь попал
на текущий экран.


Сейчас мы внедряем класс, отправляющий события в сервисы аналитики, в презентер,
и отправляем события оттуда. Один из плюсов такого подхода - мы можем отправить запрос
по множеству событий - пользователь зашёл на экран (создание презентера), пользователь
успешно выполнил какое-то действие (ответ от модели), или наоборот, что-то пошло не
так. К тому же, мы можем протестировать наличие этих вызовов юнит тестами.
    


Ответы

Ответ 1



Я вижу это так: Аналитика относится непосредственно к поведению пользователя, поэтому вся ее работа принадлежит к слою презентации. Таким образом за трекинг событий и их цепочек ответственны презентеры. Для трекинга сложных событий создается AnalyticsManager - где и решаются все подобные вопросы. Он также находится на уровне презентеров. Можно вспомнить аналогичный пример: Router - сущность ответственная за навигацию. Тоже находится на уровне презентеров. ЗЫ: Как правильно в комментарии к другому ответу заметил @Jeevuz, бывает аналитика не только поведения пользователя, но и внутренних процессов приложения. Тогда несомненно надо сделать AnalyticsRepository, куда будут сыпаться все события от скорости получения данных с сервера и количестве битых объектов, до пользовательских кликов. Но за сбор самих кликов и анализ переходов по экранам будет отвечать описанный мной AnalyticsManager все также в слое презентеров.

Ответ 2



Аналитика - сбор данных для последующего анализа. С точки зрения приложения это посылка сообщений и на сервер через какую-либо библиотеку. Это ничем не отличается от работы с сервером своим. Поэтому мы должны рассматривать это как работу с данными и использовать для этого репозиторий. То есть создаем Репозиторий для аналитики с методами добавления событий и используем где необходимо. В презентере, в инеракторе или еще где-то.

Комментариев нет:

Отправить комментарий