Referência da classe TAGDataLayer

Referência da classe TAGDataLayer

Informações gerais

A camada de dados é um dicionário que contém informações genéricas sobre o aplicativo.

Ele usa um conjunto padrão de chaves para que possa ser lido por qualquer parte que entenda a especificação. O estado da camada de dados é atualizado pela API. Por exemplo, um aplicativo pode começar com a seguinte dataLayer:

   {
     title: "Original screen title"
   }

À medida que o estado/os dados de um aplicativo mudam, ele pode atualizar o dataLayer com uma chamada como:

   [dataLayer push:@{@"title": @"New screen title"}];

Agora, a camada de dados contém:

   {
     title: "New screen title"
   }

Depois que outro envio acontecer:

   [dataLayer push:@{@"xyz": @3}];

O dataLayer contém:

   {
     "title": "New screen title",
     "xyz": 3
   }

O exemplo a seguir demonstra como funciona a mesclagem de matrizes e mapas. Se o dataLayer original contiver:

   {
     "items": @[@"item1", [NSNull null], @"item2", @{@"a": @"aValue", @"b": @"bValue"}]
   }

Após o envio:

   [dataLayer push:@{@"items":
       @[[NSNull null], @"item6", kTAGDataLayerObjectNotPresent, @{@"a": [NSNull null]}]}

O dataLayer contém:

   {
     "items": @[[NSNull null], @"item6", @"item2", @{@"a": [NSNull null], @"b": @"bValue"}]}
   }

Os envios acontecem de forma síncrona. Após o envio, as mudanças são refletidas no modelo.

Quando uma chave event é enviada para a camada de dados, as regras das tags são avaliadas e todas as tags correspondentes a esse evento são disparadas. Por exemplo, considerando um contêiner com uma tag cuja regra de disparo é que "event" é igual a "openScreen", depois do envio:

   [dataLayer push:@{@"event", @"openScreen"}];

essa tag será disparada.

Funções membro público

(void) - pushValue:forKey:
 Envia um par de chave-valor para a camada de dados.
(void) push:
 Mescla o objeto update especificado no modelo de dados atual, chamando todos os listeners com a atualização (depois que ocorrer a mesclagem).
(NSObject *)- get:
 Retorna o objeto no modelo associado à chave especificada.

Documentação da função membro

- (void) pushValue: (NSObject *) value
forKey: (NSObject *) chave

Envia um par de chave-valor para a camada de dados.

Esse é apenas um método de conveniência que chama push:@{key: value}.

- (void) push: (NSDictionary *) update

Mescla o objeto update especificado no modelo de dados atual, chamando todos os listeners com a atualização (depois que ocorrer a mesclagem).

É válido que os valores no dicionário (ou matrizes incorporadas) sejam do tipo NSNull. Se você quiser representar um valor ausente (como um índice vazio em uma lista), use o objeto kTAGDataLayerObjectNotPresent.

Essa normalmente é uma chamada síncrona. No entanto, se, enquanto a linha de execução estiver executando o push, ocorrer outro push da mesma linha de execução, então esse segundo push será assíncrono (o segundo push retornará antes que as alterações tenham sido feitas na camada de dados). Esse segundo envio da mesma linha de execução poderá ocorrer, por exemplo, se um push da camada de dados for feito em resposta ao disparo de uma tag. No entanto, todas as atualizações serão processadas antes do retorno do push mais externo.

Se update contiver a chave event, as regras serão avaliadas e as tags correspondentes serão disparadas.

Parâmetros:
updateO objeto de atualização a ser processado
- (NSObject*) get: (NSString *) key

Retorna o objeto no modelo associado à chave especificada.

Se a chave não estiver presente, retorna nil. Se key estiver presente, mas NSNull, retornará NSNull.

A chave pode ter pontos incorporados. Por exemplo: uma chave de "a.b.c" retorna o valor da chave "c" no dicionário com a chave "b" no dicionário com a chave "a" no modelo.