-
Notifications
You must be signed in to change notification settings - Fork 0
Интеграция Firebase Analytics
Для встраивания fireBase в свой проект вам понадобится файл конфигурации для данного проекта. Его можно получить следующим образом:
-
Создайте проект в консоли FireBase
-
Нажмите на значок шестеренки и выберите Настройки проекта.
-
Откройте карту Ваши приложения и найдите на ней идентификатор пакета приложения, файл конфигурации которого нужно скачать.
-
Нажмите иконку скачивания google-services.json.
Далее скопируйте данный файл в каталог app/. вашего приложения
Для подключения sdk к вашему проекту вам необходимо в корневой файл build.gradle добавить библиотеку гугл сервисов
buildscript {
// ...
dependencies {
// ...
classpath 'com.google.gms:google-services:3.0.0'
}
}
Далее в файл проекта app/build.gradle нужно добавить :
apply plugin: 'com.android.application'
android {
// ...
}
dependencies {
// ...
compile 'com.google.firebase:firebase-core:9.6.1'
// Getting a "Could not find" error? Make sure you have
// the latest Google Repository in the Android SDK manager
}
// ADD THIS AT THE BOTTOM
apply plugin: 'com.google.gms.google-services'
Для дальнейшего удобства опишем класс настройки объекта аналитики и его получения
public class FirebaseAnalyticsInstance {
private final FirebaseAnalytics mAnalytics;
public FirebaseAnalyticsInstance(MyApplication application) {
mAnalytics = FirebaseAnalytics.getInstance(application.getApplicationContext());
configurFirebaseAnalytics(application);
}
public FirebaseAnalytics getAnalyticsInstance() {
return mAnalytics;
}
private void configurFirebaseAnalytics(MyApplication application) {
// userId - идентификатор пользователя , для более удобного и информативного треккинга
String userId = Integer.toString(application.getUserID());
mAnalytics.setUserId(userId);
}
}
Его инициализацию необходимо произвести в вашем классе Application, в методе onCreate()
@Override
public void onCreate() {
super.onCreate();
mFirebaseAnalyticsInstance = new FirebaseAnalyticsInstance(this);
}
Также в Application необходимо описать метод получения объекта аналитики:
public FirebaseAnalytics getmFirebaseAnalytics() {
return mFirebaseAnalyticsInstance.getAnalyticsInstance();
}
Следующий список событий будет отправляться автоматически и не требует вмешательства разработчика:
Наименование события | Когда происходит |
---|---|
first_open | Первый раз когда пользователь открывает приложение после установки/переустановки приложения. |
in_app_purchase | При inApp оплате пользователем через App Store на iTunes или Google Play. product ID, product name, currency, и quantity отправляются в качестве параметров. Такие события как возврат денег не отслеживаются, поэтому данные в Google Play Developer Console и аналитике могут отличаться |
user_engagement | Периодически, когда работает приложение |
session_start | Когда пользователь включает приложение на длительность превышающую минимальную длительность сессии, после простоя, приведшего к таймаут сессии. |
app_update | Когда происходит апдейт на новую версию и запуск приложения. Id предыдущей версии отправляется как параметр |
app_remove | Когда приложение удалено с устройства. This event is different from the Daily uninstalls by device and Daily uninstalls by user metrics, which are both reported by Google Play Developer Console. The app_remove event counts the removal of application packages, regardless of the installation source, and the count changes depending on the date range you are using for the report. The Daily uninstalls by device and Daily uninstalls by user metrics count the removal of application packages only when they were installed from Google Play, and are reported on a daily basis. |
os_update | Когда пользователь обновляет ОС. Предыдущая версия отправляется в качестве параметра |
app_clear_data | Когда пользователь чистит или сбрасывает данные приложения, сбрасывает настройки. |
app_exception | Когда приложение выбрасывает исключение. |
notification_foreground | Когда нотификация, отправленная при помощи Firebase Notifications, принята, и приложение запущено. |
notification_receive | Когда нотификация, отправленная при помощи Firebase Notifications, принята, и приложение свернуто. |
notification_open | Когда пользователь открывает нотификацию, отправленную при помощи Firebase Notifications. |
notification_dismiss | Когда пользователь отменяет нотификацию, отправленную при помощи Firebase Notifications. |
dynamic_link_first_open | Когда пользователь в первый раз открывает приложение через dynamic link. |
dynamic_link_app_open | Когда пользователь открывает приложение через dynamic link |
dynamic_link_app_update | Когда пользователь обновляет приложение через dynamic link |
Для удобства обработки собственных событий введем новый класс описывающий событие:
public class FirebaseEvent {
final String mEventName;
final Map<String, String> mEventValues;
public FirebaseEvent(Builder builder) {
mEventName = builder.mEventName;
mEventValues = builder.mEventValues;
}
public static class Builder {
final String mEventName;
final Map<String, String> mEventValues;
Builder (String eventName) {
mEventName = eventName;
mEventValues = new HashMap<>();
}
public FirebaseEvent.Builder addParameter(String parameterName, String value) {
mEventValues.put(parameterName, value);
return this;
}
public FirebaseEvent create() {
return new FirebaseEvent(this);
}
}
public void commit(MyApplication application) {
Bundle params = new Bundle();
for (Map.Entry<String, String> entry : mEventValues.entrySet()) {
String key = entry.getKey();
String value = entry.getValue();
params.putString(key, value);
}
FirebaseAnalytics analytics = application.getmFirebaseAnalytics();
analytics.logEvent( mEventName, params );
}
}
Пример использования в приложении с использованием событий встроенных в FireBase:
new FirebaseEvent.Builder(FirebaseAnalytics.Event.SELECT_CONTENT)
.addParameter(FirebaseAnalytics.Param.ITEM_ID, mId)
.addParameter(FirebaseAnalytics.Param.ITEM_NAME, mName)
.addParameter(FirebaseAnalytics.Param.CONTENT_TYPE, mContent)
.create()
.commit(getApplication());
Пример использования в приложении с использованием собственных событий:
new FirebaseEvent.Builder("image_info")
.addParameter("image_name", mName)
.addParameter("image_size", mSize)
.create()
.commit(getApplication());
Для отслеживания переходов на экраны можно отправлять следующее событие из метода onCreate интересующих нас экранов:
new FirebaseEvent.Builder(FirebaseAnalytics.Event.SELECT_CONTENT)
.addParameter(FirebaseAnalytics.Param.CONTENT_TYPE, "screen")
.addParameter(FirebaseAnalytics.Param.ITEM_ID, НАИМЕНОВАНИЕ_ЭКРАНА)
.create()
.commit(getApplication());
Или, если нам необходимо отслеживать открытие всех активити, в методе у Application, который implements Application.ActivityLifecycleCallbacks
@Override
public void onActivityStarted(Activity activity) {
new FirebaseEvent.Builder(FirebaseAnalytics.Event.SELECT_CONTENT)
.addParameter(FirebaseAnalytics.Param.CONTENT_TYPE, "screen")
.addParameter(FirebaseAnalytics.Param.ITEM_ID, НАИМЕНОВАНИЕ_ЭКРАНА)
.create()
.commit(getApplication());
}
Существует список событий (перечислены в классе FirebaseAnalytics.Event) и соответствующих им параметров (перечислены в классе FirebaseAnalytics.Param). Вот некоторые из них, которые могут быть полезны:
Наименование | Когда использовать | Соответствующие параметры |
---|---|---|
FirebaseAnalytics.Event.SELECT_CONTENT | Когда юзер открывает какой-то контент в приложении. можно использовать для треккинга открытия экрана | FirebaseAnalytics.Param.CONTENT_TYPE, FirebaseAnalytics.Param.ITEM_ID |
FirebaseAnalytics.Event.SHARE | Когда пользователь делится какой-то информацией в приложении | FirebaseAnalytics.Param.CONTENT_TYPE, FirebaseAnalytics.Param.ITEM_ID |
FirebaseAnalytics.Event.SIGN_UP | Когда пользователь регистрируется в системе. Позволяет увидеть способ регистрации (Google account, email address, итп.) | FirebaseAnalytics.Param.SIGN_UP_METHOD |
FirebaseAnalytics.Event.SEARCH | Когда пользователь ищет что-либо в приложении | FirebaseAnalytics.Param.SEARCH_TERM |
Наименование | Когда использовать | Соответствующие параметры |
---|---|---|
FirebaseAnalytics.Event.ADD_PAYMENT_INFO | Когда пользователь вводит billing информацию | без параметров |
FirebaseAnalytics.Event.VIEW_ITEM | Когда пользователь просматривает конкретный товар/предложение | FirebaseAnalytics.Param.ITEM_ID, FirebaseAnalytics.Param.ITEM_LOCATION_ID |
FirebaseAnalytics.Event.VIEW_ITEM_LIST | Когда пользователь просматривает список товаров/предложений | FirebaseAnalytics.Param.ITEM_CATEGORY |
FirebaseAnalytics.Event.VIEW_SEARCH_RESULTS | Когда пользователь просматривает результат поиска | FirebaseAnalytics.Param.SEARCH_TERM |
FirebaseAnalytics.Event.ECOMMERCE_PURCHASE | Когда пользователь совершает оплату | FirebaseAnalytics.Param.COUPON, FirebaseAnalytics.Param.CURRENCY, FirebaseAnalytics.Param.VALUE, FirebaseAnalytics.Param.TAX, FirebaseAnalytics.Param.SHIPPING, FirebaseAnalytics.Param.TRANSACTION_ID |
FirebaseAnalytics.Event.PURCHASE_REFUND | Когда произошел возврат | FirebaseAnalytics.Param.QUANTITY, FirebaseAnalytics.Param.CURRENCY, FirebaseAnalytics.Param.VALUE, FirebaseAnalytics.Param.TRANSACTION_ID |
FirebaseAnalytics.Event.ADD_TO_CART | Когда пользователь добавляет в корзину | FirebaseAnalytics.Param.QUANTITY, FirebaseAnalytics.Param.ITEM_CATEGORY, FirebaseAnalytics.Param.ITEM_NAME, FirebaseAnalytics.Param.ITEM_ID, FirebaseAnalytics.Param.ITEM_LOCATION_ID, FirebaseAnalytics.Param.VALUE, FirebaseAnalytics.Param.PRICE, FirebaseAnalytics.Param.CURRENCY |
FirebaseAnalytics.Event.BEGIN_CHECKOUT | Когда пользователь начинает оплату | FirebaseAnalytics.Param.COUPON, FirebaseAnalytics.Param.CURRENCY, FirebaseAnalytics.Param.VALUE |
FirebaseAnalytics.Event.ADD_TO_WISHLIST | Когда пользователь добавляет вещь в wishlist | FirebaseAnalytics.Param.QUANTITY, FirebaseAnalytics.Param.ITEM_CATEGORY, FirebaseAnalytics.Param.ITEM_NAME, FirebaseAnalytics.Param.ITEM_ID, FirebaseAnalytics.Param.ITEM_LOCATION_ID, FirebaseAnalytics.Param.VALUE, FirebaseAnalytics.Param.PRICE, FirebaseAnalytics.Param.CURRENCY |
FirebaseAnalytics.Event.GENERATE_LEAD | FirebaseAnalytics.Param.VALUE, FirebaseAnalytics.Param.CURRENCY |
По умолчанию с каждого пользователя собирается следующий набор данных:
Наименование | Тип | Описание |
---|---|---|
Age | Text | Identifies users by six categories: 18-24, 25-34, 35-44, 45-54, 55-64, and 65+ |
App Store | Text | The store from which the app was downloaded and installed. |
App Version | Text | The versionName (Android) or the Bundle version (iOS) |
Country | Text | The country the user resides in. |
Device Brand | Text | The brand name of the mobile device (e.g. Motorola, LG or Samsung) |
Device Category | Text | The category of the mobile device (e.g. mobile or tablet) |
Device Model | Text | The mobile device model name (e.g. iPhone 5s or SM-J500M) |
First Open Time | Number | The time (in microseconds, UTC) at which the user first opened the app |
Gender | Text | Identifies users as either male or female. |
Interests | Text | Lists the interests of the user, e.g. "Arts & Entertainment, Games, Sports" |
Language | Text | The language setting of the device OS (e.g. en-us or pt-br) |
New/Established | N/A | New: First opened the app within the last 7 days. Established: First opened the app more than 7 days ago. |
OS Version | Text | The version of the device OS (e.g. 9.3.2 or 5.1.1) |
Также можно добавлять и собственные данные о пользователе. Для этого необходимо:
- Зарегистрировать данное свойство в консоли FireBase
- Добавить передачу данного свойства. Для этого необходимо в классе FirebaseAnalyticsInstance в методе configurFirebaseAnalytics добавить запись свойства:
mFirebaseAnalytics.setUserProperty(НАИМЕНОВАНИЕ_СВОЙСТВА, ЗНАЧЕНИЕ_СВОЙСТВА);