TagManager

öffentliche Klasse TagManager

Dies ist die mobile Implementierung von Google Tag Manager (GTM). Verwendungsbeispiel:

 Container container = TagManager.getInstance(context).openContainer(myContainerId);
 String value = container.getString("myKey");

 DataLayer dataLayer = TagManager.getInstance(context).getDataLayer();
 dataLayer.push(DataLayer.mapOf("event", "openScreen", "screenName", "Main Page"));
Ein Container ist eine Sammlung von Makros, Tags und Regeln. Sie wird in der GTM-Anwendung erstellt und einer Container-ID zugewiesen. Diese Container-ID wird in dieser API verwendet.

Die Klasse Container bietet Methoden zum Abrufen von Werten mit einem Schlüssel. Die Routinen getBoolean(String), getDouble(String), getLong(String), getString(String) geben in Abhängigkeit von den Regeln, die dem Container zugeordnet sind, den aktuellen Wert für den Schlüssel eines Werterfassungsmakros zurück.

Beispiel: Wenn Ihr Container ein Werterfassungsmakro mit dem Schlüssel speed mit dem Wert 32 und die Aktivierungsregel Language ist „en“ und ein weiteres Werterfassungsmakro mit dem Schlüssel speed mit dem Wert 45 und der Aktivierungsregel Language nicht „en“, wird der folgende Aufruf ausgeführt:

 container.getLong("speed")
gibt entweder 32 zurück, wenn die aktuelle Sprache des Geräts Englisch ist, oder 45, andernfalls 45.

Die Datenschicht ist eine Karte mit allgemeinen Informationen zur App. Die Klasse DataLayer bietet Methoden zum Übertragen und Abrufen von Daten aus der Datenschicht. Wenn ein event-Schlüssel an die Datenschicht gesendet wird, werden Tags ausgelöst, die diesem Ereignis entsprechen.

Eine anfängliche Version des Containers ist mit der Anwendung gebündelt. Er sollte als Asset mit dem Namen tagmanager/containerId platziert werden, wobei containerId dieselbe Container-ID ist, die Sie in dieser API verwenden. Wenn Sie openContainer(String, Container.Callback) aufrufen, wird der Container mit diesen gebündelten Regeln/Makros zurückgegeben. Sie erstellen den Container in der Benutzeroberfläche und verwenden die Schaltfläche „Herunterladen“, um ihn herunterzuladen.

Sie können den Container in der Benutzeroberfläche ändern und eine neue Version veröffentlichen. In diesem Fall erhält die mobile App beim nächsten Aktualisieren des Containers aus dem Netzwerk (derzeit alle zwölf Stunden) diese neue Version. Wenn Sie eine der get...-Routinen aufrufen, wird der Wert anhand der neuesten Regeln berechnet.

Der heruntergeladene Container wird lokal gespeichert. Wenn Sie openContainer(String, Container.Callback) aufrufen, wird zuerst der Standardcontainer geladen. Anschließend werden alle gespeicherten Container asynchron geladen. Wenn keine gefunden wird oder älter als 12 Stunden ist, wird versucht, eine neuere Version aus dem Netzwerk abzurufen. Sie können den Status dieser asynchronen Ladevorgänge ermitteln, indem Sie Container.Callback an openContainer(String, Container.Callback) übergeben.

Manchmal möchten Sie den Container blockieren, bis entweder ein nicht standardmäßiger Container oder ein aktueller, neuer Container verfügbar ist. ContainerOpener ist eine hilfreiche Dienstprogrammklasse.

Wenn Sie mit einem Container fertig sind, rufen Sie close() auf.

Zusammenfassung für geschachtelte Klassen

Oberfläche TagManager.Logger Eine einfache Benutzeroberfläche für die Fehler-, Warnungs-, Informations-, Fehlerbehebungs- und ausführliche Protokollierung. 
enum TagManager.RefreshMode Modus zum Aktualisieren des Containers. 

Public Method Summary

Container
getContainer(String containerId)
Kontext
DataLayer
statisches TagManager
getInstance(Kontext context)
Logger
TagManager.RefreshMode
Container
openContainer(String containerId, Container.Callback Callback)
void
setLogger(Logger logger)
void

Public Methods

public Container getContainer (String containerId)

Gibt den geöffneten Container zurück, der mit containerId verknüpft ist. Wenn der Container noch nicht geöffnet ist, wird null zurückgegeben.

public Kontext getContext ()

Gibt den gespeicherten Kontext zurück, der mit diesem Objekt verknüpft ist

public DataLayer getDataLayer ()

Gibt das Datenschichtobjekt zurück, das vom Tag Manager verwendet wird

public static TagManager getInstance (Context context)

Rufen Sie die Singleton-Instanz der Klasse TagManager ab und erstellen Sie sie bei Bedarf.

public Logger getLogger ()

Gibt den Logger zurück, der von Tag Manager verwendet wird

public TagManager.RefreshMode getRefreshMode ()

Gibt den Aktualisierungsmodus zurück, der für alle Container verwendet wird.

public Container openContainer (String containerId, Container.Callback Callback)

Gibt einen Container zurück. Ein Callback wird aufgerufen, wenn verschiedene Vorgänge für den Container passieren. OpenContainer versucht mindestens, eine gespeicherte Version des Containers zu laden. Wenn keine gespeicherte Version vorhanden ist oder die gespeicherte Version veraltet ist, wird versucht, sie aus dem Netzwerk zu laden.

Normalerweise ist der zurückgegebene Container leer. Das Laden erfolgt jedoch in einem separaten Thread. Daher kann der zurückgegebene Container vor oder nach der Rückgabe oder auch nie aktualisiert werden, wenn beispielsweise während der Lebensdauer des Containers keine Netzwerkverbindung besteht.

Wenn Sie openContainer für eine bestimmte containerId ein zweites Mal aufrufen, wird eine Ausnahme ausgelöst.

Parameter
containerId Die ID des zu öffnenden Containers
callback Ein Objekt, dessen verschiedene Methoden während Teile des Ladevorgangs aufgerufen werden. Beachten Sie, dass die Methoden von verschiedenen Threads aus aufgerufen werden können. Außerdem können sie aufgerufen werden, bevor openContainer zurückgegeben wird.

public void setLogger (Logger logger)

Ersetzt den vorhandenen Logger, der von Tag Manager verwendet wird.

public void setRefreshMode (TagManager.RefreshMode Modus)

Legt den Aktualisierungsmodus fest, der für alle Container verwendet wird.