TagManager

classe pública TagManager

Esta é a implementação para dispositivos móveis do Gerenciador de tags do Google (GTM). Exemplo de uso:

 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"));
Um contêiner é um conjunto de macros, tags e regras. Ele é criado no aplicativo do GTM e recebe um ID de contêiner. Esse ID de contêiner é o usado nessa API.

A classe Container fornece métodos para recuperar os valores com base em uma chave. As rotinas getBoolean(String), getDouble(String), getLong(String) e getString(String) retornam o valor atual da chave de uma macro de coleção de valores, dependendo das regras associadas ao contêiner.

Por exemplo, caso seu contêiner tenha uma macro de coleta de valores com uma chave speed com valor 32 e a regra de ativação Language é "en", e outra macro de coleta de valores com uma chave speed com valor 45, e a regra de ativação é Language não é "en", faça a seguinte chamada:

 container.getLong("speed")
retornará 32 se o idioma atual do dispositivo for inglês ou 45 se não for.

A camada de dados é um mapa que contém informações genéricas sobre o aplicativo. A classe DataLayer fornece métodos para enviar e extrair dados da camada de dados. Enviar uma chave event para a camada de dados fará com que as tags que correspondem a esse evento sejam disparadas.

Uma versão inicial do contêiner é fornecida com o aplicativo. Ele precisa ser colocado como um recurso com o nome tagmanager/containerId, em que containerId é o mesmo ID de contêiner que você usará nessa API. Quando você chamar openContainer(String, Container.Callback), o contêiner será retornado com essas regras/macros agrupadas. Você criará o contêiner na interface e usará o botão "Download" para fazer o download dele.

É possível modificar o contêiner na interface e publicar uma nova versão. Nesse caso, na próxima vez que o app para dispositivos móveis atualizar o contêiner da rede (atualmente a cada 12 horas), ele receberá a nova versão. Quando você chama uma das rotinas get..., o valor é calculado usando as regras mais recentes.

O contêiner salvo é salvo localmente. Quando você chamar openContainer(String, Container.Callback), ele primeiro carregará o contêiner padrão e, em seguida, carregará de maneira assíncrona qualquer contêiner salvo. Se nenhuma for encontrada ou se ela tiver mais de 12 horas, ele tentará recuperar uma versão mais recente da rede. Você pode encontrar o status desses carregamentos assíncronos transmitindo um Container.Callback para openContainer(String, Container.Callback).

Às vezes, você pode querer bloquear até que um contêiner não padrão esteja disponível ou até que um contêiner novo recente esteja disponível. ContainerOpener é uma classe de utilitário que pode ajudar.

Quando terminar de usar um contêiner, chame close().

Resumo de classes aninhadas

Interface TagManager.Logger Uma interface simples para registros de erro/aviso/informação/depuração/detalhamento
enum TagManager.RefreshMode Modo de atualização do contêiner. 

Resumo do método público

Contêiner
getContainer(String containerId)
contexto
DataLayer
estático TagManager
getInstance(Contexto context)
Logger
TagManager.RefreshMode
Contêiner
openContainer(String containerId, Container.Callback callback)
void
setLogger(logger logger)
void

Métodos públicos

public Contêiner getContainer (String containerId)

Retorna o contêiner aberto associado ao containerId. Retorna null se o contêiner ainda não estiver aberto.

público Contexto getContext ()

Retorna o contexto salvo associado a esse objeto.

public DataLayer getDataLayer ()

Retorna o objeto da camada de dados usado pelo Gerenciador de tags.

público estático TagManager getInstance (Contexto contexto)

Consiga a instância singleton da classe TagManager e a crie, se necessário.

public Logger getLogger ()

Retorna o logger que está sendo usado pelo Gerenciador de tags.

public TagManager.RefreshMode getRefreshMode ()

Retorna o modo de atualização usado para todos os contêineres.

public Contêiner openContainer (String containerId, Container.Callback containerId)

Retorna um contêiner. O callback será chamado conforme várias coisas acontecem no contêiner. No mínimo, o openContainer tentará carregar uma versão salva do contêiner. Se não houver uma versão salva ou ela estiver desatualizada, será feita uma tentativa de carregamento pela rede.

Normalmente, o contêiner retornado estará vazio, mas o carregamento acontecerá em uma linha de execução separada. Portanto, ele pode ser atualizado antes ou depois de ser retornado, ou pode nunca ser atualizado (se, por exemplo, não houver conexão de rede durante o ciclo de vida do contêiner).

Se você chamar openContainer uma segunda vez para um determinado containerId, uma exceção será lançada.

Parâmetros
containerId o ID do contêiner a ser aberto
callback um objeto cujos vários métodos serão chamados durante partes do processo de carregamento. Os métodos podem ser chamados a partir de diferentes linhas de execução. Além disso, eles podem ser chamados antes do retorno de openContainer.

public void setLogger (logger logger)

Substitui o logger atual usado pelo Gerenciador de tags.

public void setRefreshMode (TagManager.RefreshMode modo)

Define o modo de atualização usado para todos os contêineres.