Introdução
O Gerenciador de tags do Google permite que os desenvolvedores alterem os valores de configuração nos seus aplicativos para dispositivos móveis usando a interface do Gerenciador de tags do Google sem ter que recriar e reenviar os binários do aplicativo aos mercados de apps.
Isso é útil para gerenciar quaisquer valores de configuração ou flags no seu aplicativo que você possa precisar mudar no futuro, incluindo:
- Várias configurações de interface e strings de exibição
- Tamanhos, locais ou tipos de anúncios veiculados no seu aplicativo
- Várias configurações de jogos
Os valores de configuração também podem ser avaliados no tempo de execução usando regras, permitindo o configurações, como:
- Como usar o tamanho da tela para determinar o tamanho do banner do anúncio
- Usar o idioma e o local para configurar elementos da interface
O Gerenciador de tags do Google também permite a implementação dinâmica de tags e pixels de acompanhamento em aplicativos conteinerizados. Os desenvolvedores podem enviar eventos importantes para uma camada de dados e decidir posteriormente qual tags ou pixels de rastreamento devem ser disparados.
Antes de começar
Conclua as etapas a seguir antes de iniciar este Guia de primeiros passos:
- Instalar o SDK para Android
- Baixe o SDK do Google Play Services.
- Crie uma conta do Gerenciador de tags do Google.
- Configurar um contêiner do Gerenciador de tags do Google
Depois que você concluir essas etapas, o restante deste guia vai orientar você sobre como configurar e usar o Gerenciador de tags do Google no seu app Android.
Primeiros passos
Depois de seguir este Guia explicativo, você entenderá como:
- Adicionar o Gerenciador de tags do Google ao seu projeto
- Inicialize o Gerenciador de tags no seu aplicativo
- Ver os valores de configuração de um contêiner do Gerenciador de tags
- Enviar valores e eventos para o
dataLayer
- Visualizar, depurar e publicar seu contêiner
Este guia usa snippets de código do Cute Animals
aplicativo de exemplo incluído no
SDK do Google Play Services.
A origem completa deste projeto está disponível em: <android-sdk-directory>/extras/google/google_play_services/tagmanager/cuteanimals
.
1. Adicionar o Gerenciador de tags do Google ao seu projeto
Para adicionar o Gerenciador de tags do Google ao seu projeto:
- Configure o SDK do Google Play Services.
- Se você usa um IDE diferente de
Android Studio, adicione as seguintes permissões ao
Arquivo
AndroidManifest.xml
:<!-- For TagManager SDK --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
- Para ativar
InstallReferrerReceiver
para chamar o receptor do Google Analytics Para definir os dados da campanha, adicione o seguinte à ArquivoAndroidManifest.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. Como adicionar um arquivo de contêiner padrão ao seu projeto
O Gerenciador de tags do Google usa um contêiner padrão na primeira execução do seu aplicativo. O padrão será interrompido assim que o aplicativo puder recuperar um novo contêiner pelo em uma rede VPC.
Para fazer o download e adicionar um binário de contêiner padrão ao aplicativo:
- Faça login na interface da Web do Gerenciador de tags do Google.
- Selecione a versão do contêiner que você quer fazer o download.
- Clique no botão Download para recuperar o binário do contêiner.
- Adicione o arquivo binário de contêiner salvo ao projeto como um recurso bruto.
- Se a subpasta
raw
em<project-root>/res/
não existe, crie-o. - Se necessário, renomeie o arquivo binário do contêiner. Ele consiste apenas em letras minúsculas, dígitos e sublinhados.
- Copie o arquivo binário do contêiner para a pasta.
<project-root>/res/raw
:
- Se a subpasta
Embora seja recomendado usar o arquivo binário, se seu contêiner não tiver regras ou tags, use um arquivo JSON simples.
3. Inicializando o Gerenciador de tags do Google
Para inicializar o Gerenciador de tags do Google no seu aplicativo:
- Receba o Singleton
TagManager
:TagManager tagManager = TagManager.getInstance(this);
- Use o Singleton
TagManager
para fazer uma solicitação para carregar um contêiner, especificando um ID do contêiner do Gerenciador de tags do Google, bem como seu contêiner padrão . O ID do contêiner precisa estar em letras maiúsculas e corresponder exatamente ao ID na tag do Google Manager. A chamada paraloadContainerPreferNonDefault()
não bloqueia e retorna umaPendingResult
:PendingResult<ContainerHolder> pending = tagManager.loadContainerPreferNonDefault(CONTAINER_ID, R.raw.defaultcontainer_binary);
- Use um
ResultCallback
para retornar oContainerHolder
depois de terminar de carregar ou expirar:// 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);
Como criar um Singleton ContainerHolder
Mantenha apenas uma instância de
ContainerHolder
por execução do seu para o aplicativo. É por isso que o exemplo acima usa uma classe de utilitárioContainerHolderSingleton
para gerenciar o acesso à instânciaContainerHolder
. Aqui está o que isso A classeContainerHolderSingleton
tem esta aparência: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. Como receber valores de configuração do contêiner
Depois que o contêiner é carregado, você pode recuperar os valores de configuração usando qualquer um dos
Container.get<type>()
. Os valores de configuração são definidos usando
Variáveis de coleta de valores do Gerenciador de tags do Google. Por exemplo, o método a seguir
recupera a última cor que decidimos usar para um elemento de interface do usuário e a retorna como
Um número inteiro:
/** * Returns an integer representing a color. */ private int getColor(String key) { return colorFromColorName(containerHolder.getContainer().getString(key)); }
Esse código faz duas coisas para recuperar o nome da cor do contêiner:
- Recebe o
Container
doContainerHolder
usandoContainerHolder.getContainer()
. - Recebe o valor da cor usando
Container.getString(key)
, em que você tem definiu a chave e o valor na interface da Web do Gerenciador de tags do Google.
5. Como enviar eventos e valores para o dataLayer
O Gerenciador de tags do Google também fornece um dataLayer
, em que você pode enviar informações
sobre seu aplicativo que podem ser lidos em outras partes do aplicativo ou usados para disparar tags
que você configurou na interface da Web do Gerenciador de tags do Google.
Como enviar valores para o dataLayer
O dataLayer
fornece uma camada de persistência que pode ser usada
para armazenar pares de chave-valor que podem ser usados em outras partes do aplicativo, ou
como entradas para as tags do Gerenciador de tags do Google.
Para enviar um valor ao dataLayer
, siga este padrão:
- Obtenha o
Singleton
DataLayer
:DataLayer dataLayer = TagManager.getInstance(context).getDataLayer();
- Envie o evento usando
DataLayer.push()
:// Put the image_name into the data layer for future use. TagManager.getInstance(this).getDataLayer().push(IMAGE_NAME_KEY, imageName);
Para extrair um valor de dataLayer
, use
DataLayer.get(key)
.
Como enviar eventos para o dataLayer
Enviar eventos para o dataLayer
permite separar o código do aplicativo dos
tags que você pode disparar em resposta a esses eventos.
Por exemplo, em vez de codificar chamadas de acompanhamento de exibições de tela do Google Analytics no seu aplicativo,
É possível enviar eventos de tela para o dataLayer
e definir suas tags de acompanhamento pelo
Interface da Web do Gerenciador de tags do Google. Assim, você tem a flexibilidade de modificar a tag ou adicionar
tags adicionais que respondem a eventos de tela, sem atualizar o código do aplicativo.
Para enviar um evento para o dataLayer
, siga este padrão:
- Obtenha o
Singleton
DataLayer
:DataLayer dataLayer = TagManager.getInstance(context).getDataLayer();
- Envie o evento usando
DataLayer.pushEvent()
:dataLayer.pushEvent("openScreen", DataLayer.mapOf("screenName", screenName));
O
DataLayer.mapOf()
é um método utilitário que pode ser usado para gerar facilmente um mapa de pares de chave-valor que vão atualizar odataLayer
ao mesmo tempo em que o evento é enviado.
6. Visualização, depuração e publicação
Antes de publicar uma versão do seu contêiner, é preciso visualizá-la para ter certeza de que ela funciona como pretendido. Com o Gerenciador de tags do Google, você pode visualizar as versões do seu contêiner gerando links e códigos QR na interface da Web e usando-os para abrir seu aplicativo. Você também pode ativar um modo de registro detalhado para depurar qualquer comportamento inesperado.
Visualização
Para visualizar uma versão do seu contêiner, siga estas etapas:
- Adicionando a visualização
Activity
ao arquivoAndroidManifest
:<!-- 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>
Certifique-se de modificar essa linha para incluir o nome do pacote do seu aplicativo:
<data android:scheme="tagmanager.c.com.google.android.tagmanager.examples.cuteanimals" />
- Gerar um link de visualização na interface da Web do Gerenciador de tags do Google
- Faça login no Gerenciador de tags do Google
- Selecione a Versão do contêiner para visualizar.
- Clique no botão Visualizar
- Insira o nome do pacote do seu aplicativo e clique em Gerar link de entrada na visualização.
- Use o link gerado ou o QR code para iniciar seu aplicativo
- Para sair do modo de visualização, siga um link gerado por Gerar link de saída da visualização. na interface da Web.
Depuração
Se você precisar resolver problemas na implementação do contêiner, ative o registro detalhado chamando
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);
Publicação
Depois de visualizar o contêiner e verificar se ele está funcionando conforme o esperado, você pode publique seu contêiner. Seu valores de configuração do contêiner, tags e eventos estarão ativos para os usuários na próxima vez contêineres são atualizados. Saiba mais sobre a atualização de contêineres.
Configuração avançada
As seções a seguir descrevem as opções de configuração avançada que você deseja usar para personalizar ainda mais seu implementação do Gerenciador de tags do Google.
Como atualizar o contêiner
Por padrão, seu contêiner se qualifica para ser atualizado a cada 12 horas. Atualizar manualmente
contêiner, use
ContainerHolder.refresh()
:
ContainerHolderSingleton.getContainerHolder().refresh();
Essa é uma chamada assíncrona que não será retornada imediatamente. Para reduzir o tráfego de rede, o refresh()
pode
só será chamado uma vez a cada 15 minutos. Caso contrário, será um ambiente autônomo.