Минус Одна Система Анализа Данных

Количество систем аналитики и визуализации данных, необходимых для повседневной работы, уже давно превысило все разумные пределы.

С появлением Firebase их лагерь увеличился на один.

В этой статье мы расскажем, как связать мобильную платформу Google с другим, более привычным инструментом аналитики – Google Analytics. Площадкой для экспериментов стал наш новый продукт Tviggo (мобильное приложение + набор мессенджер-ботов для международных звонков через GSM — www tviggo.net).



Минус одна система анализа данных

Насколько вам известно, Google Tag Manager (GTM) в декабре 2016 года выпустил обновление — GTM V5 для iOS и Android, предназначенное для работы с Firebase. На данный момент реальных примеров кода для использования 5 версии практически нет, поэтому помимо довольно скудных инструкций на странице быстрого старта приходится собирать информацию по крупицам.

Таким образом, одним из важных отличий от v4 и более ранних версий является порядок инициализации GTM. Теперь разработчику не нужно писать какой-либо шаблонный код инициализации и забывать о loadContainerPreferNonDefault. При этом вы можете сосредоточиться только на отправке событий в Firebase, не забывая при этом разместить в ассетах/контейнерах JSON-файл с базовой версией контейнера, который можно скачать из GTM сразу после первой публикации.

Firebase может передавать в GTM любое имя и параметры события (в дополнение к персонал которые автоматически генерируются приложением) для сбора аналитических данных о приложении.

С помощью логики GTM эти события могут транслироваться во внешние системы, такие как Google Analytics. Для проведения такой манипуляции необходимо в коде в важных для мониторинга аналитикой местах разместить параметры загрузки данных в Firebase (например, загрузку события «Старт» с параметрами A=1, B= 2).

Далее вам нужно создать переменные A и B в GTM, настроить конфигурацию переменных, затем создать триггер (например, «запустить приложение») и создать тег (например, как только Firebase запускает событие Start, вам необходимо загрузить указанный контент в GA).

Теперь наглядно и пошагово: 1. Создайте пользовательскую переменную

Минус одна система анализа данных

2. Зарегистрируйте конфигурацию переменной.



Минус одна система анализа данных

3. Настройте триггер

Минус одна система анализа данных

4. Создайте тег

Минус одна система анализа данных

В коде приложения аналогично описываем введенные в GTM параметры и события в удобной для дальнейшего использования обертке:

  
   

class TviggoAnalytics(context: Context) { val TviggoStart = Event("TviggoStart") object Params { val call_uid = Param("call_uid") val call_medium = Param("call_medium") } private val firebase: FirebaseAnalytics = FirebaseAnalytics.getInstance(context) inner class Event(val name: String) { fun push(vararg params: Pair<Param, Any?>) { push(HashMap<Param, Any>() + params) } fun push(baseParams: Map<Param, Any?>, vararg params: Pair<Param, Any?>) { push(baseParams + params) } fun push(params: Map<Param, Any?>) { val bundle = Bundle() params.forEach { if (it.value != null) { when (it.value) { is String -> bundle.putString(it.key.name, it.value as String) is Int -> bundle.putInt(it.key.name, it.value as Int) is Long -> bundle.putLong(it.key.name, it.value as Long) is Float -> bundle.putFloat(it.key.name, it.value as Float) is Byte -> bundle.putByte(it.key.name, it.value as Byte) is Short -> bundle.putShort(it.key.name, it.value as Short) is Double -> bundle.putDouble(it.key.name, it.value as Double) is Boolean -> bundle.putBoolean(it.key.name, it.value as Boolean) is Char -> bundle.putChar(it.key.name, it.value as Char) else -> bundle.putString(it.key.name, it.value.toString()) } } } firebase.logEvent(name, bundle) } } class Param(val name: String) }

И тогда, допустим, в классе Application при создании экземпляра приложения мы регистрируем отправку события в Firebase с параметром Call ID, равным 2.

val analytics = TviggoAnalytics(applicationContext) override fun onCreate() { super.onCreate() analytics.TviggoStart.push( TviggoAnalytics.Params.call_uid to 2, TviggoAnalytics.Params.call_medium to "GSM" ) }

В качестве примера использован параметр «идентификатор вызова» — фактически в момент начала идентификатора вызова нет. Что мы получаем в результате: 1. В приложении, отчет о выполнении которого мы видим в GA, было выполнено какое-то действие путем преобразования исходного события Firebase через контейнер Google Tag Manager.

Минус одна система анализа данных

2. Если проанализировать еще глубже, то увидим, что созданный нами параметр со значением 2 отображался в Метке (именно так, как указано в теге).



Минус одна система анализа данных

3. При этом в Firebase также загружаются все исходные события в исходном виде.

Таким образом, через GTM вы получаете механизм, позволяющий сохранять и анализировать весь поток данных, поступающих из Firebase, в любой удобной системе аналитики.

Такая система позволяет быстро редактировать загрузки в GA без пересборки приложения.

Надеюсь, объяснение было понятным и полезным для хабросообщества.

P.S. да, наш проект написан на Kotlin, поэтому Android-код будет выглядеть не совсем привычно, но я думаю, вы справитесь :) Буду рад ответить на ваши вопросы! Теги: #диспетчер тегов Google #gtm #Firebase #Индексирование приложений Firebase #аналитика Firebase #Google Analytics #Kotlin #анализ данных #разработка iOS #разработка мобильных приложений #разработка Android #разработка систем связи #Kotlin

Вместе с данным постом часто просматривают: