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 | |
void | |
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 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 setRefreshMode (TagManager.RefreshMode modo)
Define o modo de atualização usado para todos os contêineres.