Tipos de evento

Observação: A Adobe Experience Platform Launch está sendo reformulada como um conjunto de tecnologias de coleta de dados no Experience Platform. Essas alterações serão implementadas em toda a documentação do produto nas próximas semanas. Consulte o seguinte document para obter uma referência consolidada das alterações de terminologia.

Um módulo de biblioteca de tipos de evento tem um objetivo: detectar quando uma atividade acontece e, quando isso ocorre, chamar uma função para acionar a regra associada. O que está sendo detectado depende de você. Você está detectando quando um usuário faz um gesto específico? Quando um usuário faz a rolagem rapidamente? Quando um usuário interage com algo?

OBSERVAÇÃO

Este documento supõe que você esteja familiarizado com os módulos de biblioteca e como eles são integrados nas extensões do Platform Launch. Consulte a visão geral na formatação de módulo de biblioteca para obter uma introdução à sua implementação antes de retornar a este guia.

Além do parâmetro settings comum a outros tipos de módulo, o module.exports de um tipo de evento aceita um segundo parâmetro, trigger:

module.exports = function(settings, trigger) { … };
Parâmetro Descrição
settings Um objeto que contém quaisquer configurações que o usuário definiu na visualização do tipo de evento. Você tem controle total sobre o que vai para esse objeto.
trigger Uma função que o módulo deve chamar sempre que a regra deve ser acionada. Há uma relação um para um entre um objeto settings, uma função trigger e uma regra. Em outras palavras, a função de acionamento recebida para uma regra não pode ser usada para acionar uma regra diferente.
OBSERVAÇÃO

A função exportada será chamada uma vez para cada regra configurada para usar seu tipo de evento.

Vamos supor que a atividade que estamos detectando seja quando cinco segundos tiverem decorrido. Depois de cinco segundos, a atividade ocorreu e a regra deve ser acionada. Nosso módulo pode ser semelhante a:

module.exports = function(settings, trigger) {
  setTimeout(trigger, 5000);
};

Agora, e se quisermos tornar a duração configurável pelo usuário do Adobe Experience Platform Launch? Em nossa visualização, permitimos que o usuário insira uma duração e, em seguida, salve a duração no objeto de configurações. O objeto pode ser semelhante a:

{
  "duration": 25000
}

Para operar com a duração definida pelo usuário, nosso módulo precisaria mudar para:

module.exports = function(settings, trigger) {
  setTimeout(trigger, settings.duration);
};

Transmissão de dados do evento contextuais

Ao acionar uma regra, geralmente pode ser útil fornecer detalhes adicionais sobre o evento que ocorreu. Os usuários que criam regras podem considerar essas informações úteis para alcançar determinado comportamento. Por exemplo, vamos supor que um profissional de marketing deseje criar uma regra na qual um beacon de análise é enviado sempre que o usuário desliza o dedo pela tela. Se nossa extensão fornecer um tipo de evento swipe, o profissional de marketing poderá usar nosso tipo de evento para acionar a regra apropriadamente. Agora, e se o profissional de marketing quiser incluir no beacon o ângulo específico em que o deslizamento do dedo ocorreu? Isso seria difícil sem informações adicionais.

Para fornecer mais informações sobre o evento que ocorreu, passe um objeto ao chamar a função trigger. Por exemplo:

trigger({
  swipeAngle: 90 // the value would be the detected angle
});

Assim, o profissional de marketing poderia usar esse valor em um beacon de análise especificando o valor %event.swipeAngle% em um campo de texto. Ele também pode acessar event.swipeAngle em outros contextos (como uma ação de código personalizada). Fique à vontade para incluir qualquer informação sobre o evento que possa ser útil para um profissional de marketing. Essas informações são totalmente opcionais.

nativeEvent

Se o seu tipo de evento for baseado em um evento nativo (por exemplo, se a extensão tiver fornecido um tipo de evento click), recomendamos definir a propriedade nativeEvent da seguinte maneira:

trigger({
  nativeEvent: nativeEvent // the value would be the underlying native event
});

Isso pode ser útil para profissionais de marketing que tentam acessar qualquer informação do evento nativo, como coordenadas de cursor.

element

Se houver uma relação forte entre um elemento e o evento que ocorreu, recomendamos definir a propriedade element para o nó DOM do elemento. Por exemplo, vamos supor que a extensão forneça um tipo de evento click e você permita que os comerciantes a configurem para que a regra seja acionada somente se um elemento com a ID herobanner for selecionado. Nesse caso, se o usuário clicar no banner principal, recomendamos chamar trigger e definir element para o nó DOM do banner principal.

trigger({
  element: element // the value would be the DOM node
});

Respeitar a ordem das regras

O Platform Launch oferece aos usuários a capacidade de ordenar regras. Por exemplo, um usuário pode criar duas regras que usam o tipo de evento de alteração de orientação e o usuário gostaria de personalizar a ordem em que as regras são acionadas. Vamos supor que o usuário do Platform Launch especifique um valor de ordem 2 para o evento de alteração de orientação na Regra A e um valor de ordem 1 para o evento de alteração de orientação na Regra B. Isso indica que, quando a orientação mudar em um dispositivo móvel, a Regra B deverá ser acionada antes da Regra A (regras com valores de ordem mais baixos são acionadas primeiro).

Como mencionado anteriormente, a função exportada em nosso módulo de evento será chamada uma vez para cada regra configurada para usar nosso tipo de evento. Cada vez que a função exportada é chamada, ela recebe uma função exclusiva trigger vinculada a uma regra específica. No cenário descrito, nossa função exportada será chamada uma vez com uma função trigger vinculada à Regra B e, em seguida, novamente com uma função trigger vinculada à Regra A. A Regra B aparece primeiro porque o usuário lhe deu um valor de ordem menor que a Regra A. Quando nosso módulo de biblioteca detecta uma alteração de orientação, é importante chamar as funções trigger na mesma ordem em que foram fornecidas ao módulo da biblioteca.

No código de exemplo abaixo, observe que quando uma alteração de orientação é detectada, as funções de acionamento são chamadas na mesma ordem em que foram fornecidas à função exportada:

var triggers = [];

window.addEventListener('orientationchange', function() {
  triggers.forEach(function(trigger) {
    trigger();
  });
});

module.exports = function(settings, trigger) {
  triggers.push(trigger);
};

Isso garante que a ordem especificada pelo usuário seja mantida.

Uma implementação incorreta chamaria as funções de acionamento em uma ordem diferente:

var triggers = [];

window.addEventListener('orientationchange', function() {
  for (var i = triggers.length - 1; i >= 0; i--) {
    triggers[i]();
  }
});

module.exports = function(settings, trigger) {
  triggers.push(trigger);
};

As práticas de programação natural mantêm a ordem correta, mas é importante estar ciente das implicações e realizar o desenvolvimento adequadamente.

Nesta página