• Головна
  • /
  • Блог
  • /
  • Підключення Firebase та Google Analytics 4 до Android-додатку
кавер статті 19

Підключення Firebase та Google Analytics 4 до Android-додатку


Сьогодні матеріал, який дуже довго чекав на свою появу. Чомусь про тему аналітики мобільних додатків пишуть значно менше ніж про вебаналітику. Хоча в багатьох нішах трафік з мобільних додатків вже давно обганяє веб.

Якщо ви слідкуєте за мною певний час, то знаєте, що підписники, студенти, а можливо навіть ви самі, власною персоною, спонукали мене почати описувати цю тему. Для тих, кому цікаво, нижче буде невелика історія, чому я це відкладав і чому зараз зібрався. Якщо вам не цікаво, просто прогорніть до плану матеріалу. Після нього вже буде частина “по ділу”.

Трішки, або й не зовсім трішки, історії.

Якщо ви знаєте, як я працюю, то знаєте, що я люблю закопуватись в деталі. І ні, я не з тих, хто хоче знати все. Я розумію, що це нереально. Мені достатньо знати чому ми щось робимо і які обмеження діють на систему, з якою ми працюємо. Саме тому працюючи з вебаналітикою я багато часу приділив вивченню роботи сайтів, браузерів, та й інтернету як такого. Я вважаю, що кожен вебаналітик повинен розуміти ці процеси, знати JavaScript на певному рівні, вміти працювати з інструментами розробника в браузері і знати багато інших технічних деталей. Тільки заглиблюючись в такі деталі можна зрозуміти, як влаштований збір даних в аналітичні та маркетингові системи, та які обмеження впливають на цей збір. І тільки якщо розуміти, які дані ми збираємо - можна їх правильно аналізувати і робити правильні висновки, які будуть приводити до кращих результатів.

До чого я це все? На мою думку, для того щоб писати і тим більше вчити когось - потрібно прощупати весь цей процес зсередини. І якщо для вебу процес мені був зрозумілий - відкриваємо браузер, пишемо код, дебажимо, дивимось… То як підступитись до аналітики мобільних додатків на такому глибокому рівні певний час залишалось питанням. Звісно, процес той самий, відкриваємо Android Studio чи XCode і теж пишемо код, дебажимо, дивимось… Але ж там інші мови програмування, інші підходи і все по-іншому…

Але світ змінився. Зараз з допомогою умовного ChatGPT не так вже й важко за декілька годин накидати свій власний мобільний додаток. Звісно, він навряд чи посяде місце в ТОПі додатків, але для моїх дослідницьких цілей більш ніж достатньо.

Тому цим постом починаємо лупати цю скалу. Протягом цього року буде серія постів, в яких я буду ділитись покроковими інструкціями з налаштування мобільної аналітики, і певними аспектами своїх досліджень. Це буде глибокий технічний матеріал, але від аналітика, не від розробника. Його задача допомогти вебаналітикам заглибитись в процес створення та роботи мобільних додатків настільки, щоб розуміти як влаштований процес збору даних і які обмеження на нього впливають чи можуть впливати. Матеріали будуть виходити нерегулярно, але постійно. Якщо ви не хочете пропустити, підпишіться на розсилку внизу сторінки.

Почнемо ми з додатків на Android. Я вже написав на Kotlin маленьку гру, невеликий текстовий квест, для наших дослідницьких цілей.

В сьогоднішньому матеріалі я опишу процес підключення Firebase до Android додатку. В наступних матеріалах поговоримо про стандартні та кастомні події та їх параметри, властивості користувача та, коли я разом з ChatGPT допишу внутрішньоігровий магазин, про події Ecommerce.

Все що в мене є на старті - це мобільний додаток, який я назвав EscapeTheDungeon. У вас, звісно, буде свій додаток. Всі інші дії ми виконаємо разом. Наш план:

Створення проєкту в консолі Firebase

Firebase — це платформа від Google, яка надає інструменти для розробників мобільних додатків. Але вона цікава і для вебаналітиків, бо включає аналітику для мобільних додатків.

Для нас, як аналітиків, найважливішим у Firebase є Firebase Analytics (або точніше — Google Analytics for Firebase, який зараз інтегровано в GA4). Саме через цю інтеграцію відбувається збір даних у GA4. Тому, щоб почати аналіз у GA4, спочатку потрібно налаштувати збір даних у додатку за допомогою Firebase.

Перш за все перейдіть до консолі Firebase і натисніть Create a Firebase project.

19.1 create firebase project

Далі вкажіть назву вашого проєкту і натисніть Continue. Я назвав EscapeTheDungeon Test.

19.2 project name

На цьому етапі ви можете вибрати опцію не створювати новий проєкт, а підключити існуючий проєкт Google Cloud Platform. Але, якщо ви вже маєте проєкт в GCP думаю ви й самі розберетесь з цією опцією ;) Далі ми продовжимо шлях створення з нуля.

Наступний етап дуже важливий, якщо ми хочемо налаштувати аналітику: обов'язково перевірте чи активований перемикач в налаштуванні Enable Google Analytics for this project. Якщо все ок, знову натисніть Continue.

19.3 enable GA4

Звісно, ви зможете зв'язати акаунт GA4 та проєкт Firebase і пізніше на вкладці Project settings > Integrations. Але чому б не зробити все одразу.

Тепер нам потрібно підключити потрібний ресурс GA4. Тут можливі декілька варіантів:

  • Створити новий акаунт Google Analytics 4
  • Підключити проєкт до існуючого акаунту Google Analytics 4

Створення нового акаунту Google Analytics 4

Якщо у вас немає сайту і єдине що зараз є - це мобільний додаток - створіть новий акаунт. Для цього проскрольте вниз випадаючого списку і там знайдете кнопку Create a new account.

19.4 configure Google Analytics

Далі потрібно вказати назву. Рекомендую вказати таку ж як і для проєкту Firebase.

19.5 google analytics account name

Після цього потрібно буде вибрати локацію і погодитись (або не погодитись) на збір та обробку певних даних. Що саме ховається за кожним дозволом я вже писав в статті про налаштування GA4.

Зверніть увагу! Налаштування локації для GA4 не впливає на те, де Google може обробляти та зберігати дані клієнтів для Firebase. Це налаштування стосується саме GA4 і фактично вплине тільки на вибір валюти в якій буде відображатись дохід з додатку.

19.6 settings

Як на етапі створення підключити проєкт Firebase до існуючого акаунту Google Analytics 4

Якщо у вас вже є існуючий вебсайт, який стосується того ж бізнесу, що й додаток - рекомендую поєднати Firebase з уже існуючим ресурсом GA4. Для цього в випадаючому списку оберіть потрібний акаунт і в блоці Automatically create a new property in this account натисніть на олівець і виберіть вже існуючий ресурс.

Зверніть увагу! Потрібно вибрати саме існуючий ресурс де вже є дані вашого сайту. Саме ця опція дозволить вам в подальшому поєднати дані про взаємодію користувачів в рамках сайту та мобільного додатку в єдиний флоу.

19.7 analytics property

Незалежно від того, обрали ви варіант створення GA4 з нуля чи приєднали проєкт до існуючого ресурсу щоб перейти на наступний етап натисніть Create project. І зачекайте близько хвилини, поки ваш проєкт буде створено.

19.8 project preparation

Якщо все пройшло успішно - ви побачите відповідне повідомлення:

19.9 firebase project is ready

Щоб додати Firebase до вашого додатку Android натисніть продовжити. А поки вітаю з проходженням першого кроку!

Як додати Firebase до додатку Android

Для початку відкрийте ваш додаток в Android Studio.

Android Studio — це середовище, в якому розробники створюють Android-додатки. Саме в ньому ми зможемо виконати наступні дії:

  • Додати Firebase у додаток
  • Перевірити, чи збираються події
  • Запустити додаток на емуляторі або телефоні

Дуже грубо кажучи, якщо для вебу важко уявити собі налаштування аналітики без використання DevTool браузера, то для налаштування аналітики додатку Android - без використання Android Studio.

Навіть якщо ви “всього лише аналітик” на проєкті з додатком - повірте, вам це точно знадобиться для дебагу.

Після цього в консолі Firebase перейдіть на екран Project Overview і оберіть тип додатку Android.

19.10 add firebase to app

Тепер нам потрібно буде пройти 3 етапи:

  1. Реєстрація додатку
  2. Скачування і додавання файла конфігурації
  3. Додавання Firebase SDK

Давайте виконаємо їх разом:

  1. Реєстрація додатку

На цьому етапі потрібно заповнити три поля, два з яких є опціональними:

19.11 register app
  • Android package name - Вказуємо назву пакета (часто його називають ще ідентифікатором програми). Його можна знайти у файлі Gradle (на рівні app). В моєму випадку це com.example.escapethedungeon.
19.12 applicationId

Назва пакета унікально ідентифікує вашу програму на пристрої користувача та в магазині Google Play. Найчастіше використовується зворотна форма доменного імені компанії, а далі йде назва самого додатку. Наприклад, якщо у вас компанія з доменом example.com і ви створюєте додаток під назвою myapp, типовий Android package name може виглядати як com.example.myapp.

Зверніть увагу! Вище в тексті я писав “можна знайти у файлі Gradle (на рівні app)” і в дужках насправді дуже важливе уточнення.

Gradle - це інструмент для автоматичного збирання (build system), який допомагає додавати бібліотеки, компілювати код, автоматизувати процеси та створювати APK-файл для встановлення.

В Android-проєкті є два типи файлів Gradle:

  • Проєктний build.gradle (або в моєму випадку build.gradle.kts, оскільки використовується Kotlin DSL) – знаходиться у корені проєкту. Цей файл керує налаштуваннями всього проєкту. Він містить: версію Gradle Plugin, загальні репозиторії для всіх модулів, глобальні залежності.
  • Модульний build.gradle – знаходиться у папці конкретного модуля (зазвичай app/build.gradle) і зазвичай керує налаштуваннями цього модуля. В ньому серед іншого зазначаються залежності для цього модуля і саме тут ми будемо підключати Firebase трохи згодом.
19.13 build.gradle
  • App nickname - Назва додатку, яка потім буде відображатись в інтерфейсі Firebase. На скріні нижче ви бачите зверху App nickname і знизу ідентифікатор програми. Рекомендую вказати для зручності.
19.14 App nickname
  • Debug signing certificate SHA-1 - Опціональне поле. Потрібне для роботи таких функцій Firebase як Dynamic Links чи Google Sign-In. Для наших задач поки не потрібно, тому можна не заповнювати. В будь-якому разі його, як і App nickname можна потім заповнити в налаштуваннях.
19.15 Debug signing certificate SHA-1

Після заповнення полів натисніть Register app.

2. Скачування і додавання файла конфігурації. Після реєстрації, наступним кроком вам запропонує скачати файл і додати його в додаток. Загалом весь процес досить добре описаний зі сторони Firebase, скрін цього опису я і додав нижче. Просто скачайте файл і додайте його в потрібну папку. Туди ж, де знаходиться модульний файл Gradle з якого ми копіювали ідентифікатор додатку.

19.16 app registration

Після цієї операції не забудьте натиснути на кнопку Next.

3. Додавання Firebase SDK.

Знову ж таки в самій інструкції від Firebase, яка відкриється на цьому кроці досить добре описано що і де потрібно зробити. Фактично потрібно просто додати декілька рядків коду в потрібні місця в двох різних файлах. Але я додам ще трішки пояснень від себе для кращого розуміння контексту.

19.17 add firebase SDK
  • Першим ділом додаємо Google services плагін для Gradle, як залежність до файлу build.gradle.kts на рівні проєкту. Без цього плагіну Firebase SDK не зможе отримати конфігурацію з файлу google-services.json, який ми додали на минулому кроці, і аналітика не працюватиме. На всяк випадок уточню, сам файл вже буде в проєкті. Вам потрібно тільки його знайти і внести зміни.
19.18 add plagin

Зверніть увагу! В кінці команди ми бачимо apply false. Оскільки не всі модулі потребують Firebase це дозволяє нам додати плагін на рівні проєкту, але застосувати його тільки на рівні певних модулів в app/build.gradle (модульному файлі gradle). Чим ми і займемось далі.

19.19 google services plagin

Можна помітити, що на моєму скріні відсутній рядок id("com.android.application"), який просить додати інструкція від Firebase. У моєму випадку, оскільки на проєкті використовується централізоване керування версіями, аналогічне підключення відбувається завдяки рядку alias(libs.plugins.android.application). В залежності від нюансів роботи проєкту обидва варіанти мають місце бути.

Друга дія - підключити потрібні Firebase SDK, які ми хочемо використовувати в додатку.

19.20 connect firebase sdk

Можна помітити, що спочатку я підключаю Firebase Android BoM(Bill of Materials). BoM – це механізм керування залежностями, який дозволяє автоматично вибирати сумісні версії всіх Firebase-бібліотек. Тобто розробнику не потрібно вручну слідкувати за версіями кожної окремої бібліотеки. Firebase гарантує, що всі бібліотеки вказаної версії BoM сумісні між собою.

І вже наступним рядком додаємо Firebase Analytics. Завдяки BoM версія визначається автоматично, тому ми не вказуємо її вручну.

Після цих операцій потрібно синхронізувати ваш Android проєкт з Gradle. Про що власне й сигналізує синя плашка в Android Studio. Натисніть Sync Now і зачекайте.

19.21 sync project with gradle

Якщо у вас не буде помилок, в результаті ви побачите напис, що все пройшло успішно.

19.22 build successful notification

Вітаю! Ми успішно додали Firebase до додатку. Але поки що він ще не збирає ніякі дані. Давайте виправимо це.

Підключення базової аналітики для мобільного додатку Android

Коли ми працюємо з вебсайтами, ми часто оперуємо поняттям “вебсторінка”. Коли ж мова заходить про мобільні додатки, то в їх роботі замість цього використовується поняття екрану. Звісно, уявити односторінковий сайт набагато простіше, ніж одноекранний додаток, але для спрощення пояснення далі я буду говорити саме про такий приклад.

Для того щоб Firebase Analytics почав відслідковувати ваших користувачів, перш за все оголосіть com.google.firebase.analytics.FirebaseAnalytics об’єкт у верхній частині вашої активності (Activity). Для цього додайте рядок з наступним кодом:

bash
import com.google.firebase.analytics.FirebaseAnalytics

Дуже грубо кажучи, кожна окрема Activity є окремим екраном вашого додатку. Проводячи паралель з вебсайтами, можна сказати, що Activity це аналог веб сторінки. Це не зовсім так, але підійде для базового розуміння. А для повного розуміння дуже рекомендую ознайомитись з цим матеріалом.

Наступними діями ми спочатку оголошуємо змінну firebaseAnalytics, за це відповідає рядок коду:

bash
private lateinit var firebaseAnalytics: FirebaseAnalytics

А потім ініціалізуємо Firebase Analytics в onCreate() методі:

bash
firebaseAnalytics = FirebaseAnalytics.getInstance(this)
19.23 firebase analytics initialization

onCreate() – це перший метод життєвого циклу активності, який викликається при її створенні. Тобто ініціалізуючи Firebase Analytics в onCreate() методі ми, якщо провести паралель з вебом і трішки спростити, фактично додаємо код в момент завантаження сторінки.

FirebaseAnalytics не можна ініціалізувати одразу при оголошенні змінної, бо він вимагає Context (тобто, наприклад, доступу до Activity). Використання lateinit дозволяє спочатку оголосити змінну, а потім ініціалізувати її у onCreate().

Вітаю! Ще один етап пройдено. З додаванням коду закінчено, тепер потрібно все перевірити.

Як створити віртуальний девайс в Android Studio для перевірки підключення Firebase Analytics

Найпростіший спосіб перевірити наші налаштування - створити віртуальний девайс. Для цього зробіть наступні дії:

  1. Відкрийте Device Manager в Android Studio.
19.24 device manager

2. Натисніть “+” і виберіть пункт Create Virtual Device.

19.25 create virtual device

3. Виберіть девайс, який вам подобається, і бажано з активованим Play Market (колонка Play, знадобиться при подальшій роботі з аналітикою додатку, не в цьому матеріалі). І звісно, врахуйте, щоб телефон підтримував ваш додаток.

19.26 choose device

4. Задайте потрібні налаштування конфігурації для девайсу. Якщо не знаєте що потрібно змінювати - просто залиште як є.

19.27 device configuration

5. Натисніть кнопку Finish. Після цього Firebase може почати скачувати додаткові файли. Це нормально. Дайте йому час)

Якщо все пройшло успішно ви побачите свій девайс.

19.28 see your device

Далі можна піти одним з двох варіантів:

  • Якщо натиснути на кнопку 1 на скріні нижче - ви просто запустите свій віртуальний девайс. Після запуску можна натиснути кнопку 2 для запуску вашого додатку на віртуальному девайсі.
  • А можна просто одразу натиснути кнопку 2 і тоді система автоматично запустить віртуальний девайс і на ньому ваш додаток.
19.29 launch virtual device

Якщо все пройшло успішно - ви побачите Android-девайс з запущеним додатком:

19.30 launched app on device

А якщо відкрити Google Analytics 4 і перейти в звіт Realtime Overview, то там буде 1 відвідувач.

19.31 realtime overview

І в нього повинно відображатись 3 перші івенти:

  • first_open
  • session_start
  • screen_view
19.32 first events

Ну і по аналогії з тим, як у вебсторінки в нас є назва, так вона є і в екрану. І ви теж можете її фіксувати без додаткових налаштувань.

19.33 firebase screen class

Але не будемо затримуватись на івентах - про це буде наступний матеріал. Давайте поговоримо про інше. Всі ми знаємо, що ріалтайм в аналітиці може глючити, і ми звикли перевіряти відправку подій через консоль девелопера в браузері. В Android Studio теж є аналогічний інструмент.

Як відобразити події Firebase в консолі Firebase

Перш за все давайте домовимось, що консоль Firebase ми будемо називати трішки іншим словом - LogCat. Щоб дані відображались в LogCat Firebase треба ввести в термінал серію `adb` команд.

bash
adb shell setprop log.tag.FA VERBOSE // встановлює рівень логування для тега FA (Firebase Analytics) у режим VERBOSE — тобто максимально докладний рівень логів.
adb shell setprop log.tag.FA-SVC VERBOSE // вмикає докладні логи для сервісної частини Firebase Analytics, яка позначена тегом FA-SVC
adb logcat -v time -s FA FA-SVC // Ця команда запускає в терміналі Logcat, фільтруючи тільки повідомлення з тегами FA і FA-SVC: -v time — додає вивід часу до кожного рядка, -s FA FA-SVC — фільтрує лог лише за тегами Firebase Analytics. В результаті в терміналі буде видно лише ті логи, що стосуються Firebase Analytics.
19.34 events in logcat

Після виконання команд в терміналі перезапустіть свій додаток.

19.35 restart app

Якщо вигляд в терміналі не подобається, можна переключитись на консоль. Для цього перейдіть в LogCat. І знайдіть потрібний лог з івентом Firebase. Для зручності можете додати фільтр логів по значенню FA-SVC.

19.36 change to console

Навіть якщо ви не бачите свій івент в режимі реального часу в GA4 - того, що ви бачите його в логах вже достатньо, щоб зрозуміти що все працює.

Як активувати режим Debug для Firebase Analytics в Android Studio

Логи в консолі це добре, але ми ж не хочемо спамити ними нашу основну аналітику. Тому добре було б передавати івенти з параметром _dbg = 1. Це дозволить швидко додавати до них спеціальну помітку, по якій потім їх можна легко відфільтрувати зі звітів.

Щоб увімкнути Firebase Analytics у режимі налагодження на пристрої Android виконайте таку команду в терміналі:

bash
adb shell setprop debug.firebase.analytics.app PACKAGE_NAME

У моєму випадку буде виглядати як:

bash
adb shell setprop debug.firebase.analytics.app com.example.escapethedungeon

Тепер з кожним івентом передається параметр _dbg = 1.

19.37 activate debug

А наші івенти відображаються в режимі DebugView в інтерфейсі Google Analytics 4.

19.38 debugview in ga4

Я розумію, що інколи сприймати логи може бути складно, але пам'ятайте, що DebugView може глючити, тому найкраще рішення - це увімкнути дебаг, щоб не спамити тестовими подіями, але все ж і далі продовжувати тестувати івенти в логах.

Для того, щоб вимкнути режим дебага скористайтесь командою:

bash
adb shell setprop debug.firebase.analytics.app .none

Як підключити експорт “сирих” даних Google Analytics 4 (включаючи дані з мобільних додатків) до Google BigQuery?

Нормальна аналітика вебсайтів, а інколи й дебаг на реальних даних складно уявити без використання BigQuery, тому останнє, що ми сьогодні зробимо - це налаштуємо експорт і стрімінг даних з Google Analytics 4 до Google BigQuery.

Для цього відкрийте GA4 перейдіть до Admin > Product links > Product links і налаштуйте зв'язок згідно цієї інструкції.

Обов'язково упевніться, що експорт активований для потоку з мобільним додатком.

19.39 export to bigquery

І для кращого розуміння процесу подальшого налагодження можете активувати стрімінг.

19.40 activate streaming

Зверніть увагу! Активація стрімінгу приведе до використання платного функціоналу Google Cloud Platform. Якщо ви не впевнені, краще цього не робити.

Замість висновку

Як я вже й писав, ця стаття лише початок. Свого роду базова підготовка в великий шлях мобільної аналітики. Тому висновків не буде, ми ще навіть не вирушили в нашу дорогу.

Якщо вам сподобалось і ви хочете продовження - напишіть про це в коментах, це додасть мотивації почати працювати над новим матеріалом швидше. Оскільки я пишу про мобільну аналітику вперше, цікаво також почути фідбек, щодо того, наскільки зрозуміло сприймається матеріал.

Писати про те, що він дуже технічний, не треба: для коректного збору даних і розуміння нюансів цього збору потрібно глибоко розуміти процес.

До зустрічі в наступних матеріалах серії ;)

FAQ

Як підключити існуючий проект Firebase до Google Analytics 4?

Це можна зробити в налаштуваннях Firebase в блоці інтеграцій.

19.41 connect existed project

Зверніть увагу, це можна зробити тільки зі сторони Firebase. Налаштувати зв'язок зі сторони GA4 не вийде.

Чи можу я підключити свій проект Firebase до двох ресурсів GA4?

Наразі такої можливості немає. Зв'язок працює в форматі 1 до 1.

В мене декілька додатків. Як мені організувати проект в Firebase і акаунти/ресурси в GA4?

Якщо у вас декілька додатків: окремих додатків чи просто версії одного для різних платформ, рекомендую ознайомитись з кращими практиками реєстрації варіантів програми в проекті Firebase по цьому лінку.

Якщо коротко: один додаток для всіх платформ - один проєкт. Тобто один додаток інтернет-магазину для iOS і один для Android - це один проєкт.

Якщо ж це логічно інший додаток - під нього потрібно створити окремий проєкт.

Зверніть увагу на окремий випадок: Firebase рекомендує використовувати окремий проєкт Firebase для кожного середовища у вашому робочому процесі розробки.


Завантаження коментарів…