Wprowadzenie
Menedżer tagów Google umożliwia programistom zmianę wartości konfiguracyjnych w aplikacjach mobilnych za pomocą interfejsu Menedżera tagów Google bez konieczności ponownego tworzenia i ponownego tworzenia plików binarnych aplikacji. na platformach handlowych.
Jest to przydatne do zarządzania wartościami konfiguracyjnymi lub flagami w aplikacji, których możesz potrzebować co można zmienić w przyszłości. Należą do nich:
- Różne ustawienia interfejsu i ciągi znaków do wyświetlania
- Rozmiary, lokalizacje lub typy reklam wyświetlanych w Twojej aplikacji
- Różne ustawienia gier
Wartości konfiguracji mogą być również oceniane w czasie działania za pomocą reguł, co pozwala na konfiguracji, takich jak:
- Określanie rozmiaru banera reklamowego na podstawie rozmiaru ekranu
- Używanie języka i lokalizacji do konfigurowania elementów interfejsu
Menedżer tagów Google umożliwia również dynamiczną implementację tagów śledzenia i pikseli w aplikacji. Deweloperzy mogą przekazywać ważne zdarzenia do warstwy danych i później decydować, tagów śledzenia czy pikseli.
Zanim zaczniesz
Przed rozpoczęciem tego przewodnika wykonaj następujące czynności:
- Zainstaluj pakiet SDK do Androida.
- Pobierz pakiet SDK Usług Google Play.
- Utwórz konto Menedżera tagów Google.
- Konfigurowanie kontenera Menedżera tagów Google
Po wykonaniu tych czynności pozostała część tego przewodnika zawiera informacje o tym, konfigurowania Menedżera tagów Google i korzystania z niego w aplikacji na Androida.
Pierwsze kroki
Z tego przewodnika dla początkujących dowiesz się, jak:
- Dodawanie Menedżera tagów Google do projektu
- Zainicjowanie Menedżera tagów w aplikacji
- Pobieranie wartości konfiguracyjnych z kontenera Menedżera tagów
- Przekazywanie wartości i zdarzeń do elementu
dataLayer
- Wyświetlanie podglądu, debugowanie i publikowanie kontenera
W tym przewodniku używamy fragmentów kodu z Cute Animals
przykładowej aplikacji dołączonej do
Pakiet SDK Usług Google Play.
Pełne źródło tego projektu jest dostępne w tych językach: <android-sdk-directory>/extras/google/google_play_services/tagmanager/cuteanimals
.
1. Dodawanie Menedżera tagów Google do projektu
Aby dodać Menedżera tagów Google do projektu:
- Skonfiguruj pakiet SDK Usług Google Play.
- Jeśli używasz IDE innego niż
Android Studio, dodaj te uprawnienia
Plik
AndroidManifest.xml
:<!-- For TagManager SDK --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
- Aby włączyć usługę
InstallReferrerReceiver
, aby wywołać odbiornik Google Analytics. aby skonfigurować dane kampanii, dodaj poniższe elementy do PlikAndroidManifest.xml
:<!-- 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. Dodawanie domyślnego pliku kontenera do projektu
Menedżer tagów Google używa kontenera domyślnego przy pierwszym uruchomieniu aplikacji. Domyślny kontener przestanie być używany, gdy tylko aplikacja będzie w stanie pobrać nowy kontener nad
Aby pobrać domyślny plik binarny kontenera i dodać go do aplikacji:
- Zaloguj się w interfejsie internetowym Menedżera tagów Google.
- Wybierz wersję kontenera, który chcesz pobrać.
- Kliknij przycisk Pobierz, aby pobrać plik binarny kontenera.
- Dodaj pobrany plik binarny kontenera do swojego projektu jako nieprzetworzony zasób.
- Jeśli podfolder
raw
w Element<project-root>/res/
nie istnieje. Utwórz go. - W razie potrzeby zmień nazwę pliku binarnego kontenera. Składa się tylko z małe litery, cyfry i podkreślenia.
- Skopiuj plik binarny kontenera do folderu
<project-root>/res/raw
- Jeśli podfolder
Chociaż zalecamy używanie pliku binarnego, jeśli Twój kontener nie zawiera reguł ani tagów, możesz używać prostego pliku JSON.
3. Inicjowanie Menedżera tagów Google
Aby uruchomić Menedżera tagów Google w swojej aplikacji:
- Pobierz singleton
TagManager
:TagManager tagManager = TagManager.getInstance(this);
- Używaj metody singletonowej
TagManager
, aby wysłać żądanie wczytania kontenera, określając identyfikator kontenera Menedżera tagów Google oraz kontener domyślny; . Identyfikator kontenera powinien być zapisany wielkimi literami i musi być identyczny z identyfikatorem kontenera w tagu Google Interfejs internetowy menedżera. Połączenie z numeremloadContainerPreferNonDefault()
nie jest blokowane i zwraca błądPendingResult
:PendingResult<ContainerHolder> pending = tagManager.loadContainerPreferNonDefault(CONTAINER_ID, R.raw.defaultcontainer_binary);
- Użyj
ResultCallback
, aby zwrócićContainerHolder
po zakończeniu wczytywania lub przekroczeniu limitu czasu:// 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);
Tworzenie elementu Singleton ContainerHolder
Zalecamy utrzymywanie tylko jednego wystąpienia
ContainerHolder
na uruchomienie aplikacji. Dlatego w powyższym przykładzie użyto klasy narzędziaContainerHolderSingleton
w celu zarządzania dostępem do instancjiContainerHolder
. Oto coContainerHolderSingleton
zajęcia wygląda jak: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. Pobieranie wartości konfiguracyjnych z kontenera
Po załadowaniu kontenera możesz pobrać wartości konfiguracyjne przy użyciu dowolnej
Container.get<type>()
metody. Wartości konfiguracyjne definiuje się za pomocą
zmiennych kolekcji wartości w Menedżerze tagów Google, Na przykład ta metoda
pobiera najnowszy kolor, który postanowiliśmy zastosować dla elementu interfejsu, i zwraca go jako
Liczba całkowita:
/** * Returns an integer representing a color. */ private int getColor(String key) { return colorFromColorName(containerHolder.getContainer().getString(key)); }
Ten kod wykonuje 2 czynności, aby pobrać nazwę koloru z kontenera:
- Pobiera
Container
z:ContainerHolder
za pomocąContainerHolder.getContainer()
. - Pobiera wartość koloru za pomocą funkcji
Container.getString(key)
, gdzie masz zdefiniować klucz i wartość w interfejsie internetowym Menedżera tagów Google.
5. Przekazywanie zdarzeń i wartości do obiektu dataLayer
Menedżer tagów Google udostępnia też dataLayer
, do którego możesz przekazywać informacje
o aplikacji, które mogą być odczytywane w innych jej częściach lub używane do uruchamiania tagów
skonfigurowany w interfejsie internetowym Menedżera tagów Google.
Przekazywanie wartości do obiektu dataLayer
dataLayer
zapewnia warstwę trwałości, której możesz użyć
do przechowywania par klucz-wartość, których możesz używać w innych częściach aplikacji.
jako dane wejściowe do tagów Menedżera tagów Google.
Aby przekazać wartość do dataLayer
, postępuj zgodnie z tym wzorcem:
- Pobierz
DataLayer
singleton:DataLayer dataLayer = TagManager.getInstance(context).getDataLayer();
- Przekaż zdarzenie za pomocą metody
DataLayer.push()
:// Put the image_name into the data layer for future use. TagManager.getInstance(this).getDataLayer().push(IMAGE_NAME_KEY, imageName);
Aby poznać wartość z kolumny dataLayer
, użyj funkcji
DataLayer.get(key)
.
Przekazywanie zdarzeń do obiektu dataLayer
Przekazywanie zdarzeń do interfejsu dataLayer
pozwala oddzielić kod aplikacji od
które możesz uruchamiać w odpowiedzi na te zdarzenia.
Na przykład zamiast kodować na stałe w aplikacji wywołania śledzenia wyświetleń ekranu Google Analytics,
możesz przekazywać zdarzenia związane z ekranem do interfejsu dataLayer
i definiować tagi śledzenia w interfejsie
Interfejs internetowy Menedżera tagów Google. Dzięki temu możesz go zmodyfikować lub dodać
innych tagów, które reagują na zdarzenia związane z ekranem, bez konieczności aktualizowania kodu aplikacji.
Aby przekazać zdarzenie do dataLayer
, korzystaj z tego wzorca:
- Pobierz
DataLayer
singleton:DataLayer dataLayer = TagManager.getInstance(context).getDataLayer();
- Przekaż zdarzenie za pomocą metody
DataLayer.pushEvent()
:dataLayer.pushEvent("openScreen", DataLayer.mapOf("screenName", screenName));
DataLayer.mapOf()
to metoda użytkowa, której możesz użyć do łatwego wygenerowania mapy które będą aktualizować wartośćdataLayer
wraz z przekazywaniem zdarzenia.
6. Podgląd, debugowanie i publikowanie
Przed opublikowaniem wersji kontenera warto wyświetlić jej podgląd, aby upewnić się, że wszystko działa zgodnie z oczekiwaniami. Menedżer tagów Google umożliwia wyświetlanie podglądu wersji kontenera przez generowanie linków i kodów QR w interfejsie internetowym i używanie ich do otwierania aplikacji. Możesz też włączyć tryb szczegółowego rejestrowania, aby debugować wszelkie nieoczekiwane zachowania.
Wyświetlam podgląd
Aby wyświetlić podgląd wersji kontenera, wykonaj te czynności:
- Dodaję ten podgląd (
Activity
) do plikuAndroidManifest
:<!-- 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>
Pamiętaj, aby zmodyfikować ten wiersz, tak aby zawierał nazwę pakietu aplikacji:
<data android:scheme="tagmanager.c.com.google.android.tagmanager.examples.cuteanimals" />
- Generowanie linku do podglądu w interfejsie internetowym Menedżera tagów Google
- Zaloguj się w Menedżerze tagów Google
- Wybierz wersję kontenera, aby wyświetlić podgląd.
- Kliknij przycisk Podgląd
- Wpisz nazwę pakietu aplikacji i kliknij Wygeneruj link do rozpoczęcia podglądu.
- Użyj wygenerowanego linku lub kodu QR, aby uruchomić aplikację
- Aby wyjść z trybu podglądu, kliknij link wygenerowany przez Wygeneruj link do końca podglądu w interfejsie internetowym.
Debugowanie
Jeśli musisz rozwiązać problemy z implementacją kontenera, włącz szczegółowe logowanie, wywołując
TagManager.setVerboseLoggingEnabled(true)
:
// 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);
Publikowanie
Po wyświetleniu podglądu kontenera i sprawdzeniu, czy działa on prawidłowo, możesz opublikuj kontener. Twoje wartości konfiguracji kontenera, tagi i zdarzenia będą dostępne dla użytkowników, kontenery zostaną odświeżone. Dowiedz się więcej o odświeżaniu kontenerów
Konfiguracja zaawansowana
W poniższych sekcjach opisano zaawansowane opcje konfiguracji, których możesz używać do dalszego dostosowywania Implementacja za pomocą Menedżera tagów Google.
Odświeżanie kontenera
Domyślnie kontener może być odświeżany co 12 godzin. Aby odświeżyć ręcznie
w kontenerze, użyj funkcji
ContainerHolder.refresh()
:
ContainerHolderSingleton.getContainerHolder().refresh();
Jest to wywołanie asynchroniczne, które nie zostanie zwrócone natychmiast. Aby ograniczyć ruch w sieci, refresh()
może
tylko raz na 15 minut, w przeciwnym razie będzie wykonywana bez operacji.