You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
`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.
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. Rejestrowane są 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 (`Activity`).
15
15
16
16
{% highlight kotlin %}
17
17
//define at the top of the activity
@@ -51,12 +51,12 @@ class MainActivity : AppCompatActivity() {
51
51
}
52
52
{% endhighlight %}
53
53
54
-
Przegląd danych zdarzeń w konsoli Firebase może prezentować się jak poniżej. Warto zauważyć, że niecałe 30% użytkowników przechodzi z pierwszego do drugiego ekranu i niewiele więcej wypełnia pole edycji w pierwszym ekranie.
54
+
Przegląd danych zdarzeń w konsoli Firebase może prezentować się jak poniżej. Łatwo zauważyć ilość wykonanych akcji w stosunku do wyświetleń ekranu.
`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.
59
+
`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 i parametr opisujący.
60
60
61
61
{% highlight kotlin %}
62
62
class SecondActivity : AppCompatActivity() {
@@ -74,12 +74,12 @@ class SecondActivity : AppCompatActivity() {
74
74
}
75
75
{% endhighlight %}
76
76
77
-
Konsola Firebase dostarcza także informacji nt właściwości użytkownika. Co ciekawe z aplikacji korzystają tylko urządzenia z Android 9, a użytkownicy pochodzą z Polski.
77
+
Konsola Firebase dostarcza także informacji nt właściwości użytkownika. Co ciekawe z aplikacji korzystają tylko urządzenia z `Android Pie`, a użytkownicy pochodzą z Polski.
78
78
79
79
{: .center-image }
80
80
81
81
## Śledzenie ekranów
82
-
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.
82
+
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 dodaje 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.
83
83
84
84
## Debugowanie
85
85
Aby dokonać weryfikacji poprawności konfiguracji Analytics z aplikacją można włączyć debugowanie i sprawdzić na maszynie deweloperskiej (w konsoli `logcat`) czy i jakie informacje są przesyłane.
Dodatkowo konsola Firebase oferuje możliwość wykorzystania trybu `DebugView`, który pozwala na walidację przesyłanych informacji w trybie rzeczywistym. W przeciwieństwie do standardowego produkcyjnego trybu `StreamView` w którym informacje wysyłane są grupowe co jakiś czas, logowanie odbywa się dla każdego zdarzenia osobno z minimalnym opoźnieniem. Aby włączyć tryb `DebugView` na urządzeniu należy wykonać poniższe polecenie.
93
+
Dodatkowo konsola Firebase oferuje możliwość wykorzystania trybu `DebugView`, który pozwala na walidację przesyłanych informacji w trybie rzeczywistym. W przeciwieństwie do standardowego produkcyjnego trybu `StreamView` w którym informacje wysyłane są zbiorczo co jakiś czas, logowanie odbywa się dla każdego zdarzenia osobno z minimalnym opoźnieniem. Aby włączyć tryb `DebugView` na urządzeniu należy wykonać poniższe polecenie.
`Firebase Crashlytics` jest narzędziem raportującym awarie w aplikacji w czasie rzeczywistym, które pochodzą z urządzeń użytkowników na których zainstalowana jest aplikacja włączając w to urządzenia deweloperskie. Pomaga śledzić błędy oraz ustalać ich priorytety dzięki czemu możliwa jest weryfikacja i naprawa problemów związanych ze stabilnością co znacząco wpływa na utrzymanie jakości. Inteligentne grupowanie awarii wraz z informacjami o okolicznościach, które do nich doprowadziły pozwala zaoszczędzić czas w procesie diagnozy, zlokalizować błędny lub potencjalnie niebezpieczny fragment kodu oraz ustalić zakres użytkowników których awaria dotyczy. Crashlytics jest ogromnym wsparciem dla deweloperów w procesie utrzymania i rozwoju aplikacji.
15
15
16
16
## Zgłaszanie
17
-
Crashlytics automatycznie zbiera i wysyła raporty o występujących błędach i awariach do konsoli Firebase (np. gdy zostanie wyrzucony `fatal exception`) oraz umożliwia ręczne logowanie przechwyconych błędów za pomocą metody `logException`. Warto odnotować, że wyjątki nie są zgłaszane pojedynczo lecz grupowo co odbywa się na dedykowanym wątku w tle dzięki czemu wpływ na wydajność aplikacji jest minimalny. Crashlytics przechowuje informacje o 8 ostatnich wyjątkach.
17
+
Crashlytics automatycznie zbiera i wysyła raporty o występujących błędach i awariach do konsoli Firebase (np. gdy zostanie wyrzucony `fatal exception`) oraz umożliwia ręczne logowanie przechwyconych błędów za pomocą metody `logException`. Warto odnotować, że wyjątki nie są zgłaszane pojedynczo lecz grupowo (8 ostatnich wyjątków) co odbywa się na dedykowanym wątku działającym w tle dzięki czemu wpływ na wydajność aplikacji jest minimalny.
18
18
19
19
{% highlight kotlin %}
20
20
buttonDivide.setOnClickListener {
@@ -55,15 +55,16 @@ private fun getThirdValue(values: ArrayList<Int>): Int {
55
55
}
56
56
{% endhighlight %}
57
57
58
-
Przegląd błędów w konsoli Firebase może prezentować się następujaco. Warto zauważyć, że przechwycone awarie mają status niekrytyczny.
58
+
## Przegląd
59
+
Przegląd błędów w konsoli Firebase może prezentować się następujaco z którego wynika, że przechwycone awarie mają status niekrytyczny.
W diagnozie problemów często przydatna może być informacja identyfikująca użytkownika, który doświadczył awarii co możliwe jest poprzez ustawienie id metodą `setUserIdentifier`.
67
+
W diagnozie problemów często użyteczna może być informacja identyfikująca użytkownika, który doświadczył awarii co możliwe jest poprzez ustawienie `id` metodą `setUserIdentifier`.
67
68
68
69
## Debugowanie
69
70
Aby sprawdzić poprawność konfiguracji Crashlytics z aplikacją nie trzeba czekać na pierwsze zgłoszenia wyjątków lecz można ręcznie wymuśić przesłanie zgłoszenia metodą `crash`.
`Firebase Performance Monitoring` jest usługą pomagającą uzyskać wgląd do wydajności aplikacji na urządzeniach użytkowników dzięki czemu możliwe jest zlokalizowanie i rozwiązanie problemów związanych z wydajnością, płynnością i szybkością działania. Automatycznie dokonuje pomiarów dla czasu startu aplikacji, działania w tle (i na pierwszym planie), renderowania ekranów czy też większości zapytań sieciowych. Przesłane raporty zawierają informacje nt użycia procesora i pamięci, a także metadane urządzenia (m.in. model, wersja systemu, wersja aplikacji, kraj) i szczegółów trasy zgłoszenia. Performance Monitoring nie zbiera żadnych danych personalnych użytkownika. Jeśli automatycznie przesyłane próbki to za mało istnieje również możliwość tworzenia personalizowanych tras śledzenia wydajności. Konsola Firebase automatycznie dokonuje analizy otrzymanych próbek na podstawie których generuje podpowiedzi o potencjalnie niewydajnych miejscach aplikacji.
15
15
16
-
## Trasy personalizowane
17
-
Rejestrowanie wydajności aplikacji zachodzi na tzw. trasach (`traces`), które opisane są między dwoma miejscami: punktem startowym i końcowym. Automatyczna trasa dla działania aplikacji w tle (`App in background`) rozpoczyna się od momentu kiedy ostatnia Aktywność (`Activity`) będąca w `foreground` wywoła `onStop`, a zakończy się w momencie wywołania `onResume` przez pierwszą Aktywność przechodzącą z trybu `background` do `foreground`. Podobnie rzecz ma się z trasami własnymi, które dotyczą wybranego przez programistę przedziału cyklu życia.
16
+
## Trasy
17
+
Rejestrowanie wydajności aplikacji zachodzi na tzw. trasach (`traces`), które opisane są między dwoma miejscami: punktem startowym i końcowym. Przykładowo automatyczna trasa dla działania aplikacji w tle (`App in background`) rozpoczyna się od momentu kiedy ostatnia Aktywność (`Activity`) będąca w `foreground` wywoła `onStop`, a zakończy się w momencie wywołania `onResume` przez pierwszą Aktywność przechodzącą z trybu `background` do `foreground`. Podobnie rzecz ma się z trasami własnymi, które dotyczą wybranego przez programistę przedziału cyklu życia.
18
18
19
19
{% highlight kotlin %}
20
20
class MainActivity : AppCompatActivity() {
21
21
22
-
lateinit var trace: Trace
22
+
private lateinit var trace: Trace
23
23
24
24
override fun onCreate(savedInstanceState: Bundle?) {
25
25
super.onCreate(savedInstanceState)
@@ -50,7 +50,7 @@ private fun addItem(item: String) {
Wsyłane żądania sieciowe `HTTP/S` są w większośći automatycznie przechwytywane i przetwarzane do postaci raportów zawierających informacje takie jak: czas odpowiedzi, rozmiar wysłanych żądań i otrzymanych odpowiedzi, wskaźnik sukcesu oraz metadane urządzenia. Ze względu na zachowanie polityki prywatności Performance Monitoring pomija parametry `URL` w procesie budowania anonimowych wzorców adresów wyświetlanych w `konsoli Firebase`. Rejestrowanie zdarzeń sieciowych wspierane jest tylko dla żądań stworzony przy użyciu`OkHttp3`. W przypadku personalizacji raportowania zapytań sieciowych lub ich ręcznego wywołania można wykorzystać kod na poniższym listingu.
76
+
Wysyłane żądania sieciowe `HTTP/S` są w większośći automatycznie przechwytywane i przetwarzane do postaci raportów zawierających informacje takie jak: czas odpowiedzi, rozmiar wysłanych żądań i otrzymanych odpowiedzi, wskaźnik sukcesu oraz metadane urządzenia. Ze względu na zachowanie polityki prywatności Performance Monitoring pomija parametry `URL` w procesie budowania anonimowych wzorców adresów wyświetlanych w `konsoli Firebase`. Rejestrowanie zdarzeń sieciowych wspierane jest tylko dla żądań opartych o`OkHttp3`. W przypadku personalizacji raportowania zapytań sieciowych lub ich ręcznego wywołania można wykorzystać kod na poniższym listingu.
77
77
78
78
{% highlight kotlin %}
79
79
private fun download(link: String) {
@@ -93,7 +93,7 @@ private fun download(link: String) {
93
93
metric.stop()
94
94
}
95
95
96
-
fun convertStreamToString(outputStream: OutputStream): String {
96
+
private fun convertStreamToString(outputStream: OutputStream): String {
97
97
return "webpage content" //mock
98
98
}
99
99
{% endhighlight %}
@@ -117,7 +117,7 @@ Zbieranie i wysyłanie raportów jest domyślnie włączone dla wszystkich użyt
117
117
{% highlight xml %}
118
118
<!-- disable at build time but allow to enable at runtime -->
0 commit comments