Einführung
Mit Google Tag Manager können Entwickler Konfigurationswerte in ihrer mobilen App über die Google Tag Manager-Oberfläche ändern, ohne die Binärprogramme der Anwendung neu erstellen und an App-Marktplätze senden zu müssen.
Dies ist nützlich, um Konfigurationswerte oder Flags in Ihrer Anwendung zu verwalten, die Sie möglicherweise in Zukunft ändern müssen, einschließlich:
- Verschiedene UI-Einstellungen und Anzeigestrings
- Größen, Standorte oder Anzeigentypen, die in Ihrer App ausgeliefert werden
- Verschiedene Spieleinstellungen
Konfigurationswerte können auch zur Laufzeit mithilfe von Regeln ausgewertet werden, um dynamische Konfigurationen wie die folgenden zu ermöglichen:
- Verwendung der Bildschirmgröße zur Bestimmung der Größe von Anzeigenbannern
- UI-Elemente mit Sprache und Standort konfigurieren
Google Tag Manager ermöglicht außerdem die dynamische Implementierung von Tracking-Tags und -Pixeln in Anwendungen. Entwickler können wichtige Ereignisse in eine Datenschicht übertragen und später entscheiden, welche Tracking-Tags oder Pixel ausgelöst werden sollen.
Vorbereitung
Führen Sie die folgenden Schritte aus, bevor Sie mit diesem Startleitfaden beginnen:
- Installieren Sie das Android SDK.
- Laden Sie das Google Play Services SDK herunter.
- Erstellen Sie ein Google Tag Manager-Konto.
- Google Tag Manager-Container konfigurieren
Nachdem Sie diese Schritte ausgeführt haben, erhalten Sie im Folgenden eine Anleitung zum Konfigurieren und Verwenden von Google Tag Manager in Ihrer Android-App.
Erste Schritte
Nachdem Sie diese Anleitung durchgegangen sind, werden Sie mit folgenden Themen vertraut:
- Google Tag Manager in ein Projekt einbinden
- Tag Manager in der Anwendung initialisieren
- Konfigurationswerte aus einem Tag Manager-Container abrufen
- Werte und Ereignisse in die
dataLayer
übertragen - Container als Vorschau ansehen, Fehler beheben und Container veröffentlichen
In diesem Leitfaden werden Code-Snippets aus der Beispielanwendung Cute Animals
verwendet, die im Google Play Services SDK enthalten ist.
Die vollständige Quelle für dieses Projekt ist hier verfügbar: <android-sdk-directory>/extras/google/google_play_services/tagmanager/cuteanimals
.
1. Google Tag Manager zu Ihrem Projekt hinzufügen
So fügen Sie Ihrem Projekt Google Tag Manager hinzu:
- Google Play Services SDK einrichten
- Wenn Sie eine andere IDE als
Android Studio verwenden, fügen Sie der Datei
AndroidManifest.xml
die folgenden Berechtigungen hinzu:<!-- For TagManager SDK --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
- Damit
InstallReferrerReceiver
den Google Analytics-Empfänger aufrufen kann, um die Kampagnendaten festzulegen, fügen Sie der DateiAndroidManifest.xml
Folgendes hinzu:<!-- Used for install referrer tracking--> <service android:name="com.google.android.gms.tagmanager.InstallReferrerService" /> <receiver android:name="com.google.android.gms.tagmanager.InstallReferrerReceiver" android:exported="true"> <intent-filter> <action android:name="com.android.vending.INSTALL_REFERRER" /> </intent-filter> </receiver>
2. Standardcontainerdatei zu Ihrem Projekt hinzufügen
Google Tag Manager verwendet bei der ersten Ausführung Ihrer Anwendung einen Standardcontainer. Der Standardcontainer wird nicht mehr verwendet, sobald die Anwendung einen neuen Container über das Netzwerk abrufen kann.
So laden Sie ein Standard-Binärprogramm für Container herunter und fügen es Ihrer Anwendung hinzu:
- Melden Sie sich auf der Weboberfläche von Google Tag Manager an.
- Wählen Sie die Version des Containers aus, den Sie herunterladen möchten.
- Klicken Sie auf die Schaltfläche Herunterladen, um die Containerbinärdatei abzurufen.
- Fügen Sie Ihrem Projekt die heruntergeladene Container-Binärdatei als Rohressource hinzu.
- Wenn der Unterordner
raw
unter<project-root>/res/
nicht vorhanden ist, erstellen Sie ihn. - Benennen Sie die Binärdatei des Containers bei Bedarf um. Er besteht nur aus Kleinbuchstaben, Ziffern und Unterstrichen.
- Kopieren Sie die Binärdatei des Containers in den Ordner
<project-root>/res/raw
.
- Wenn der Unterordner
Obwohl die Verwendung der Binärdatei empfohlen wird, können Sie auch eine einfache JSON-Datei verwenden, wenn Ihr Container keine Regeln oder Tags enthält.
3. Google Tag Manager wird initialisiert
So initialisieren Sie Google Tag Manager in Ihrer Anwendung:
- Rufen Sie das Singleton
TagManager
ab:TagManager tagManager = TagManager.getInstance(this);
- Verwenden Sie das Singleton
TagManager
, um eine Anfrage zum Laden eines Containers zu stellen. Geben Sie dabei eine Google Tag Manager-Container-ID sowie Ihre Standardcontainerdatei an. Die Container-ID muss großgeschrieben werden und genau mit der Container-ID in der Google Tag Manager-Weboberfläche übereinstimmen. Der Aufruf vonloadContainerPreferNonDefault()
ist nicht blockierend und gibt einPendingResult
zurück:PendingResult<ContainerHolder> pending = tagManager.loadContainerPreferNonDefault(CONTAINER_ID, R.raw.defaultcontainer_binary);
- Verwenden Sie einen
ResultCallback
, umContainerHolder
zurückzugeben, wenn der Ladevorgang abgeschlossen ist oder das Zeitlimit überschritten wurde:// The onResult method will be called as soon as one of the following happens: // 1. a saved container is loaded // 2. if there is no saved container, a network container is loaded // 3. the 2-second timeout occurs pending.setResultCallback(new ResultCallback<ContainerHolder>() { @Override public void onResult(ContainerHolder containerHolder) { ContainerHolderSingleton.setContainerHolder(containerHolder); Container container = containerHolder.getContainer(); if (!containerHolder.getStatus().isSuccess()) { Log.e("CuteAnimals", "failure loading container"); displayErrorToUser(R.string.load_error); return; } ContainerLoadedCallback.registerCallbacksForContainer(container); containerHolder.setContainerAvailableListener(new ContainerLoadedCallback()); startMainActivity(); } }, TIMEOUT_FOR_CONTAINER_OPEN_MILLISECONDS, TimeUnit.MILLISECONDS);
ContainerHolder-Singleton erstellen
Sie sollten nur eine Instanz von
ContainerHolder
pro Ausführung Ihrer Anwendung verwalten. Deshalb wird im obigen Beispiel die DienstprogrammklasseContainerHolderSingleton
verwendet, um den Zugriff auf die InstanzContainerHolder
zu verwalten. So sieht die KlasseContainerHolderSingleton
aus:package com.google.android.tagmanager.examples.cuteanimals; import com.google.android.gms.tagmanager.ContainerHolder; /** * Singleton to hold the GTM Container (since it should be only created once * per run of the app). */ public class ContainerHolderSingleton { private static ContainerHolder containerHolder; /** * Utility class; don't instantiate. */ private ContainerHolderSingleton() { } public static ContainerHolder getContainerHolder() { return containerHolder; } public static void setContainerHolder(ContainerHolder c) { containerHolder = c; } }
4. Konfigurationswerte aus dem Container abrufen
Sobald der Container geladen ist, können Sie Konfigurationswerte mit einer der Container.get<type>()
-Methoden abrufen. Konfigurationswerte werden mithilfe der Werterfassungsvariablen von Google Tag Manager definiert. Mit der folgenden Methode wird beispielsweise die zuletzt für ein UI-Element zu verwendende Farbe abgerufen und als Ganzzahl zurückgegeben:
/** * Returns an integer representing a color. */ private int getColor(String key) { return colorFromColorName(containerHolder.getContainer().getString(key)); }
Mit diesem Code wird der Farbname aus dem Container abgerufen:
- Ruft die
Container
aus demContainerHolder
mithilfe vonContainerHolder.getContainer()
ab. - Ruft den Farbwert mit
Container.getString(key)
ab, wobei Sie den Schlüssel und den Wert in der Google Tag Manager-Weboberfläche definiert haben.
5. Ereignisse und Werte in die dataLayer-Datei übertragen
Google Tag Manager bietet auch eine dataLayer
, in die Sie Informationen zu Ihrer Anwendung übertragen können, die in anderen Teilen der Anwendung gelesen oder zum Auslösen von Tags verwendet werden können, die Sie in der Weboberfläche von Google Tag Manager konfiguriert haben.
Werte in dataLayer übertragen
dataLayer
bietet eine Persistenzebene, mit der Sie Schlüssel/Wert-Paare, die Sie in anderen Teilen Ihrer Anwendung verwenden möchten, oder als Eingaben für Google Tag Manager-Tags speichern können.
Folgen Sie diesem Muster, um einen Wert an dataLayer
zu übertragen:
- Rufen Sie das Singleton
DataLayer
ab:DataLayer dataLayer = TagManager.getInstance(context).getDataLayer();
- Übertragen Sie das Ereignis mit
DataLayer.push()
:// Put the image_name into the data layer for future use. TagManager.getInstance(this).getDataLayer().push(IMAGE_NAME_KEY, imageName);
Verwenden Sie
DataLayer.get(key)
, um einen Wert aus dataLayer
abzurufen.
Ereignisse an dataLayer übertragen
Wenn Sie Ereignisse per Push an dataLayer
senden, können Sie Ihren Anwendungscode von Tags trennen, die möglicherweise als Reaktion auf diese Ereignisse ausgelöst werden sollen.
Anstatt beispielsweise Google Analytics-Bildschirmaufrufe zum Tracking von Aufrufen in Ihrer Anwendung hartzucodieren, können Sie Bildschirmereignisse an dataLayer
senden und Ihre Tracking-Tags über die Weboberfläche von Google Tag Manager definieren. So können Sie dieses Tag flexibel ändern oder zusätzliche Tags hinzufügen, die auf Bildschirmereignisse reagieren, ohne den Anwendungscode aktualisieren zu müssen.
Folgen Sie diesem Muster, um ein Ereignis an dataLayer
zu übertragen:
- Rufen Sie das Singleton
DataLayer
ab:DataLayer dataLayer = TagManager.getInstance(context).getDataLayer();
- Übertragen Sie das Ereignis mit
DataLayer.pushEvent()
:dataLayer.pushEvent("openScreen", DataLayer.mapOf("screenName", screenName));
DataLayer.mapOf()
ist eine Dienstprogrammmethode, mit der Sie auf einfache Weise eine Zuordnung von Schlüssel/Wert-Paaren generieren können, diedataLayer
gleichzeitig mit der Übertragung des Ereignisses aktualisiert.
6. Vorschau, Fehlerbehebung und Veröffentlichung
Bevor Sie eine Version Ihres Containers veröffentlichen, sollten Sie in der Vorschau prüfen, ob er wie gewünscht funktioniert. Mit Google Tag Manager können Sie sich eine Vorschau der Versionen Ihres Containers ansehen. Dazu generieren Sie Links und QR-Codes in der Weboberfläche, um damit Ihre Anwendung zu öffnen. Sie können auch den ausführlichen Protokollierungsmodus aktivieren, um unerwartetes Verhalten zu beheben.
Vorschau wird angezeigt
So rufen Sie eine Vorschau einer Version Ihres Containers auf:
- Der Datei
AndroidManifest
wird die VorschauActivity
hinzugefügt:<!-- Add preview activity. --> <activity android:name="com.google.android.gms.tagmanager.PreviewActivity" android:label="@string/app_name" android:noHistory="true"> <!-- optional, removes the previewActivity from the activity stack. --> <intent-filter> <data android:scheme="tagmanager.c.com.google.android.tagmanager.examples.cuteanimals" /> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE"/> </intent-filter> </activity>
Achten Sie darauf, diese Zeile so zu ändern, dass sie den Paketnamen Ihrer App enthält:
<data android:scheme="tagmanager.c.com.google.android.tagmanager.examples.cuteanimals" />
- Erstellen Sie einen Vorschaulink in der Google Tag Manager-Weboberfläche.
- In Google Tag Manager anmelden
- Wählen Sie die Version des Containers für die Vorschau aus.
- Klicken Sie auf die Schaltfläche Vorschau
- Geben Sie den Paketnamen der App ein und klicken Sie auf Link zum Starten der Vorschau erstellen.
- Verwenden Sie den generierten Link oder QR-Code, um Ihre App zu starten
- Sie können den Vorschaumodus beenden, indem Sie einem Link folgen, der in der Weboberfläche mit der Option Link zum Beenden der Vorschau generieren generiert wurde.
Debugging
Wenn Sie Fehler an der Containerimplementierung beheben müssen, aktivieren Sie ausführliches Logging. Rufen Sie dazu
TagManager.setVerboseLoggingEnabled(true)
auf:
// Modify the log level of the logger to print out not only // warning and error messages, but also verbose, debug, info messages. tagManager.setVerboseLoggingEnabled(true);
Wird veröffentlicht
Nachdem Sie sich eine Vorschau des Containers angesehen und sichergestellt haben, dass er wie vorgesehen funktioniert, können Sie den Container veröffentlichen. Die Werte, Tags und Ereignisse der Containerkonfiguration sind für Nutzer verfügbar, wenn die Container das nächste Mal aktualisiert werden. Weitere Informationen zum Aktualisieren von Containern
Erweiterte Konfiguration
In den folgenden Abschnitten werden erweiterte Konfigurationsoptionen beschrieben, mit denen Sie Ihre Google Tag Manager-Implementierung weiter anpassen können.
Container aktualisieren
Standardmäßig kann Ihr Container alle zwölf Stunden aktualisiert werden. Verwenden Sie
ContainerHolder.refresh()
, um den Container manuell zu aktualisieren:
ContainerHolderSingleton.getContainerHolder().refresh();
Dies ist ein asynchroner Aufruf, der nicht sofort zurückgegeben wird. Zur Reduzierung des Netzwerkverkehrs wird refresh()
nur alle 15 Minuten aufgerufen. Andernfalls ist es ein managementfrei.