Nachdem im dritten Teil der Firebase Analytics Serie die vordefinierten Events von Firebase Analytics behandelt wurden, widmen wir uns nun den benutzerdefinierten Events. Diese werden immer dann benötigt, wenn ein Event weder automatisch erfasst wird noch zu den vordefinierten Events zählt. Die aus den bisherigen Teilen dieser Artikelserie bekannte IntroApp wird dementsprechend erweitert.
Benutzerdefinierte Events in Firebase Analytics – Die Theorie
Die benutzerdefinierten Events in Firebase Analytics sind case-sensitive, das heißt werden beispielsweise „PushNotification“ und „ pushNotification “ als Bezeichner verwendet, sind dies zwei verschiedene Events. Der Bezeichner darf keine Sonderzeichen außer dem _ enthalten und muss mit einem Buchstaben anfangen. Die Namen der automatisch erfassten Events können natürlich ebenso wenig als Bezeichner genutzt werden wie die Präfixe ga_, google_ und firebase_. Pro angelegter App im Firebase Projekt, können maximal 500 verschiedene Event-Bezeichner genutzt werden.
Mit den benutzerdefinierten Events können frei definierbare Event-Parameter mitgesendet werden. Der Event Parameter Value (Param.VALUE aus dem importieren Klassen – siehe Firebase Analytics: Vordefinierte Events mit Event Parametern) kann jedem Event zugeordnet werden und wird für das betreffende Event aufsummiert. Wird als ein Event mit dem Value-Parameter 5 insgesamt 2-mal gesendet, wird dem Event der Value 10 zugewiesen. Das kann für die Zuweisung von Werten für Umsätze oder auch Newsletter-Subscriptions etc. sinnvoll sein. Wird ein monetärer Wert gewählt, sollte zudem der Parameter Currency (Param.CURRENCY aus den importieren Klassen) für die Umrechnung der Werte hinzugefügt werden.
Switch Einstellungen als Event erfassen
Erweitern wir nun die IntroApp um einen Switch-Button, dessen Wert in Firebase Analytics erfasst werden soll. Als Anwendungsbeispiel hierfür dient uns das Ein- und Ausschalten von Push-Notifications.
Um einen Switch zu unserer App hinzuzufügen, wird die Datei content_main.xml geöffnet. Diese beinhaltet die Design-Elemente. Android Studio bietet zwei Ansichten der Datei: Design und Text.
Die Design-Ansicht stellt die App wie im Device sichtbar dar während der Text-View die Elemente in XML darstellt.
Das Hinzufügen des Switch-Elements geht am einfachsten im Design-View. Hierfür wird der Switch aus der Menü-Leiste auf das App-Design gezogen, die Abstände definiert und benannt. Die einzelnen Schritte sind folgenden Video zu sehen:
Die Benennung des Switches erfolgt nicht hardcoded sondern per Verweis in die Datei strings.xml.
Zudem wird die ID des Buttons ersetzt. Diese wird später benötigt, um den Schalter im Quellcode anzusteuern.
Nun wird für die App die Funktionalität des Trackings hinzugefügt. Hierzu wird die Variable „push“ vom Typ Switch initialisiert.
private lateinit var push: Switch
Nach dem Hinzufügen, sollte
import android.widget.Switch
im Header der Datei automatisch erscheinen.
Nun wird der im Design-View hinzugefügte Button der Variablen push zugewiesen. Dies erfolgt durch
push = findViewById(R.id.pushnotificationswitch)
nach der Codezeile
setContentView(R.layout.activity_main)
Damit kann der Switch über die Variable push angesprochen werden. Um eine Aktion beim Betätigen des Schalters auszulösen, wird der der folgende Code nach der Initialisierung von push eingefügt:
push.setOnCheckedChangeListener{_, isChecked ->
val status = Bundle()
var ic_value = -30.00
if (isChecked){ ic_value =30.00}
status.putDouble(Param.VALUE, ic_value)
status.putString(Param.CURRENCY, "EUR")
status.putString("Checked", isChecked.toString())
firebaseAnalytics.logEvent("PushNotifications", status)
}
Mit
push.setOnCheckedChangeListener{_, isChecked ->
wird die bei der Nutzung des Schalters der neue Wert des Schalters (true oder false) in isChecked gespeichert und der nach -> angegebene Code ausgeführt.
Der Code zum Senden des benutzerdefinierten Events ist ähnlich aufgebaut wie der Code zum Senden von vordefinierten Events
val status = Bundle()
var ic_currency = -30.00
if (isChecked){ic_currency=30.00}
status.putDouble(Param.VALUE, ic_value)
status.putString(Param.CURRENCY, "EUR")
status.putString("Checked", isChecked.toString())
firebaseAnalytics.logEvent("PushNotifications", status)
Um keine Verwechslungen aufkommen zu lassen, ist der Name der Variablen für die Event-Parameter diesmal status statt params. In den Zeilen
var ic_value = -30.00
if (isChecked){ ic_value =30.00}
status.putDouble(Param.VALUE, ic_value)
status.putString(Param.CURRENCY, "EUR")
wird in ic_value beim Einschalten der Wert 30.00 und beim Ausschalten der Wert- 30.00 gespeichert, da wir für unser Beispiel annehmen, das das Abonnement der Push-Nachrichten 30.00 EUR wert ist. Danach werden die vordefinierten Event-Parameter Value mit dem Wert aus ic_value und Currency erfasst. Den Status des Schalters erfassen wir in einem benutzerdefinierten Event „Checked“. Hierfür wird der Status isChecked in ein String umgewandelt mit isChecked.toString().Statt einem vordefinierten Parameter, der durch Param. gekennzeichnet ist, wird nun einfach der String „Checked“ genutzt.
Starten wir nun die App und sehen uns die Ergebnisse im DebugView an.
Die Events und die Event-Parameter werden im DebugView angezeigt. Damit die benutzerdefinierten Event-Parameter in Report verwendet werden können, müssen diese allerdings dem Event noch zugewiesen werden. Dies erfolgt im Menü Event. Es kann jedoch bis zum nächsten Tag dauern, bis das Event dort angezeigt wird.
Event-Paramter Reporting
Mit einem Klick auf den Eventnamen wird das Dashboard für das Event eingeblendet. Hier sehen wir, das ein User das Event dreimal ausgelöst hat. Bei dem Switch bedeutet dies, das Push-Notification erst aktiviert (Value = 30.00, da Value im Event = 30), dann deaktiviert (Value = 0, da da Value im Event = -30) und dann wieder aktiviert wurde (Value = 30.00, da Value im Event = 30).
Zudem ist im Realtime Widget der Event-Parameter Checked zu sehen, wenn in den letzten 30 Minuten das Event ausgelöst wurde. Um diesen Parameter nicht nur im Realtime Widget zu sehen, sondern auch im Reporting, muss dieser dem Event noch zugewiesen werden. Hierfür kehren wir in die Event-Übersicht zurück. Gehen wir mit Maus auf das Event, erscheint am rechten Ende ein Menü-Symbol mit drei Punkten.
Beim Klick auf dieses Menü-Symbol werden zwei Auswahlpunkte angezeigt. Mit „Edit paramter reporting“ können die einem Event zugewiesenen Paramter bearbeitet werden.
Checked befindet sich bereits in der Auswahlliste links und kann durch „Add“, das erscheint, wenn der Mausszeiger darauf geschoben wird, hinzugefügt werden.
Danach erscheint das Event in der rechten Liste mit der Auswahl-Möglichkeit „Text“ oder „Number“. Dies ist das Firebase-Analytics Äquivalent zu Dimensionen (Case-Sensitive Beschreibung) und Metriken (akkumulierende Zahlenwerte) mit etwas anderer Logik allerdings. Für Checked benötigen wir einen Text-Parameter.
Es gibt harte Limitierungen für die Anzahl der Event-Parameter. Insgesamt können im Projekt nur 50 Text und 50 Number Parameter zugewiesen werden, wenn das Projekt mit einer App+Web Property in Google Analytics verknüpft ist.
Ohne diese Verknüpfung sind es lediglich 10 Text- und 40 Number-Parameter. Eine Verknüpfung mit einer Google Analytics Web+App Property erfolgt entweder im Erstellungsprozess des Projektes in Firebase oder über die Projektsettings nachträglich.
Wird ein Parameter beispielsweise zwei verschiedenen Events zugewiesen, werden dies Zuweisungen getrennt betrachtet und zwei Parameter registriert.
Ein eingehendes Event in Firebase Analytics kann 25 Event-Parameter enthalten. Es ist also möglich, mehr als 25 Event-Parameter im Parameter Reporting zuzuweisen, jedoch darf das einzelne eingehende Event nicht mehr als 25 Event-Parameter enthalten.
Nachdem die Zuweisung des Parameters gespeichert wurde, erscheint neben dem Event ein Pfeil-Symbol und eine Zahl. Diese gibt die Anzahl der zugewiesenen Event-Parameter an. Beim Klick auf den Pfeil werden die zugewiesenen Parameter eingeblendet.
Einen Gesamt-Überblick steht auch unter Parameter-Reporting zur Verfügung.
Gehen wir zurück in den Event-View und klicken auf das Event „PushNotifications“ um zum Dashboard für dieses Event zu kommen. Wir sehen nun ein Widget für das registrierte Event. Bis Daten dort sichtbar sind, kann es wieder ein paar Stunden dauern.
Also führen wir die App nochmal aus uns senden ein paar Daten für das Event „PushNotification“ mit dem Wert „Checked“. Nach einiger Zeit sollten die Daten dort erscheinen.
Daten die vor der Zuweisung des Parameters Checked zu dem Event „PushNotification“ sind allerdings nicht mehr im Widget enthalten.
Im nächsten Teil der Firebase Analytics Artikel Serie werfen wir einen genaueren Blick auf User-Properties und Audiences.