Количество систем аналитики и визуализации данных, необходимых для повседневной работы, уже давно превысило все разумные пределы.
С появлением 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 параметры и события в удобной для дальнейшего использования обертке:
И тогда, допустим, в классе Application при создании экземпляра приложения мы регистрируем отправку события в Firebase с параметром Call ID, равным 2.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) }
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
-
Вм Или Докер?
19 Oct, 24 -
Простые Часы На Msp430.
19 Oct, 24 -
Рекомендации – Релиз (Альфа)
19 Oct, 24 -
Руль Как Подарок. Logitech Driving Force Gt
19 Oct, 24