|
| 1 | +--- |
| 2 | +layout: post |
| 3 | +title: "Analytics" |
| 4 | +date: 2019-02-25 |
| 5 | +categories: ["Firebase"] |
| 6 | +image: firebase/analytics |
| 7 | +github: firebase/tree/master/analytics |
| 8 | +description: "Firebase" |
| 9 | +version: Firebase-Core 16.0 |
| 10 | +keywords: "firebase, analytics, android, programowanie, programming" |
| 11 | +--- |
| 12 | + |
| 13 | +## Możliwości |
| 14 | +`Google Analytics` dla `Firebase` jest narzędziem analitycznym przeznaczonym do pomiaru oraz rejestrowania wykorzystania aplikacji i zaangażowania użytkowników. Jest rdzeniem dla całej usługi Firebase i pozwala na integracje z różnymi innymi funkcjami. Dostarczane raporty pomagają w zrozumieniu zachowania użytkowników (w jaki sposób korzystają z aplikacji) co ułatwia podejmowanie przemyślanych, świadomych i opartych o trendy decyzje dotyczące marketingu aplikacji i optymalizacji wydajności. `SDK` rejestruje dwa podstawowe typy informacji: zdarzenia (`event`) oraz właściwości użytkownika (`user properties`), które mogą być personalizowane dla aplikacji lub pochodzić z grupy predefiniowanych. Informacje przechwytywane są w sposób automatyczny, a ich podgląd dostępny z poziomu pulpitu nawigacyjnego w `konsoli Firebase`. Na podstawie danych urządzenia, zdarzeń czy właściwości użytkownika możliwe jest tworzenie niestandardowej grupy odbiorców usług Firebase. Dodatkowo raportowane informacje mogą być przypisane do konkretnego użytkownika za pomocą jego identyfikatora przy zachowaniu polityki prywatności i regulaminu. Aby użyć Analytics do ręcznego raportowania dla konkretnego ekranu wystarczy pobrać instancje typu `FirebaseAnalytics` w `onCreate` Aktywności. |
| 15 | + |
| 16 | +{% highlight kotlin %} |
| 17 | +//define at the top of the activity |
| 18 | +private lateinit var firebaseAnalytics: FirebaseAnalytics |
| 19 | + |
| 20 | +//get instance in onCreate |
| 21 | +firebaseAnalytics = FirebaseAnalytics.getInstance(this) |
| 22 | +{% endhighlight %} |
| 23 | + |
| 24 | +## Zdarzenia |
| 25 | +`Zdarzenia` (`events`) informują o tym co się dzieje w aplikacji, jakie działania podjął użytkownik, jakie wystąpiły zdarzenia systemowe czy błędy. Rozróżniane są za pomocą klucza alfanumerycznego. Analytics automatycznie rejestruje niektóre zdarzenia (nie ma potrzeby dodawania żadnego kodu), które dotyczą interakcji m.in. z reklamami (`ad_click`), notyfikacjami (`notification_open`), wyświetleniem ekranu (`screen_view`), logowaniem (`login`) i rejestracją (`sign_up`), wyszukaniem (`search`) czy też aktualizowaniem (`app_update`), usuwaniem aplikacji (`app_remove`). Jeśli aplikacja wymaga zbierania dodatkowych danych należy je ręcznie raportować za pomocą metody `logEvent` podając klucz typu oraz obiekt `Bundle` zawierający oczekiwane wartości. |
| 26 | + |
| 27 | +{% highlight kotlin %} |
| 28 | +class MainActivity : AppCompatActivity() { |
| 29 | + |
| 30 | + private lateinit var firebaseAnalytics: FirebaseAnalytics |
| 31 | + |
| 32 | + override fun onCreate(savedInstanceState: Bundle?) { |
| 33 | + super.onCreate(savedInstanceState) |
| 34 | + setContentView(R.layout.activity_main) |
| 35 | + firebaseAnalytics = FirebaseAnalytics.getInstance(this) |
| 36 | + |
| 37 | + buttonAction.setOnClickListener { |
| 38 | + textView.setText(editText.text.toString()) |
| 39 | + val bundle = Bundle() |
| 40 | + bundle.putString(FirebaseAnalytics.Param.ITEM_ID, textView.text.toString()) |
| 41 | + bundle.putString(FirebaseAnalytics.Param.CONTENT_TYPE, "text") |
| 42 | + firebaseAnalytics.logEvent(FirebaseAnalytics.Event.SELECT_CONTENT, bundle) |
| 43 | + } |
| 44 | + |
| 45 | + buttonNavigate.setOnClickListener { |
| 46 | + firebaseAnalytics.logEvent("button_navigate_clicked", null) |
| 47 | + val intent = Intent(this, SecondActivity::class.java) |
| 48 | + startActivity(intent) |
| 49 | + } |
| 50 | + } |
| 51 | +} |
| 52 | +{% endhighlight %} |
| 53 | + |
| 54 | +## Właściwości użytkownika |
| 55 | +`Właściwości użytkownika` (`user attributes`) są atrybutami opisującymi segmenty bazy użytkowników dzięki którym przesyłane dane mogą być analizowane i filtrowane pod kątem wskazanej grupy docelowej. Podobnie jak w przypadku zdarzeń niektóre właściwości rejestrowane są w sposób auotomatyczny i są to np. wiek (`Age`), kraj (`Country`), marka urządzenia (`Device brand`), płeć (`Gender`), wersja systemu (`OS Version`) czy język (`Language`). W przypadku przesyłania dodatkowych informacji należy zarejestrować właściwość w konsoli Firebase oraz ustawić właściwość w kodzie za pomocą metody `setUserProperty` przekazując klucz oraz parametr opisujący. |
| 56 | + |
| 57 | +{% highlight kotlin %} |
| 58 | +class SecondActivity : AppCompatActivity() { |
| 59 | + |
| 60 | + private lateinit var firebaseAnalytics: FirebaseAnalytics |
| 61 | + |
| 62 | + override fun onCreate(savedInstanceState: Bundle?) { |
| 63 | + super.onCreate(savedInstanceState) |
| 64 | + setContentView(R.layout.activity_second) |
| 65 | + firebaseAnalytics = FirebaseAnalytics.getInstance(this) |
| 66 | + |
| 67 | + val city = "Poznań" //get property from some place |
| 68 | + firebaseAnalytics.setUserProperty("city", city) |
| 69 | + } |
| 70 | +} |
| 71 | +{% endhighlight %} |
| 72 | + |
| 73 | +## Śledzenie ekranów |
| 74 | +Analytics śledzi także przejścia między ekranami i dołącza do zdarzeń informacje o aktualnymi ekranie. Kiedy następuje zdarzenie wyświetlenia ekranu automatycznie dołącza parametr `firebase_screen_class` z informacją o nazwie klasy np. `MainActivity` oraz generuje `firebase_screen_id`. Śledzenie ekranów może być zgłaszane ręcznie poprzez metodę `setCurrentScreen` co może być przydatne jeśli aplikacja nie używa oddzielnego kontrolera `UIView` lub `Activity` na każdym śledzonym ekranie. |
| 75 | + |
| 76 | +## Wyświetlanie wyników |
| 77 | +//TODO debugView + debugowanie w konsoli |
| 78 | +-mozna ustawic tryb debugowania co widac w konsoli |
0 commit comments