Tipos de eventos

Un módulo de biblioteca de tipo de evento tiene un objetivo: detectar cuándo se produce una actividad y, cuando lo hace, llamar a una función para activar la regla asociada. Lo que se detecta depende de usted. ¿Detecta cuando un usuario realiza un gesto determinado? ¿Si un usuario se desplaza rápidamente? ¿Si un usuario interactúa con algo?

NOTA

Este documento supone que se ha familiarizado con los módulos de la biblioteca y con la forma en que se integran con las extensiones de Platform Launch. Consulte la información general sobre el formato del módulo de biblioteca para obtener una introducción a su implementación antes de volver a esta guía.

Además del parámetro settings, que es común a otros tipos de módulos, el module.exports de un tipo de evento acepta un segundo parámetro, trigger:

module.exports = function(settings, trigger) { … };
Parámetro Descripción
settings Objeto que contiene cualquier configuración que el usuario ha configurado en la vista del tipo de evento. Usted tiene el control final sobre lo que va a este objeto.
trigger Una función que el módulo debe llamar cada vez que se debe activar la regla. Existe una relación uno a uno entre un objeto settings, una función trigger y una regla. En otras palabras, la función desencadenadora que recibió para una regla no se puede usar para activar una regla diferente.
NOTA

La función exportada se llamará una vez para cada regla que se haya configurado para usar el tipo de evento.

Supongamos que la actividad que estamos detectando es cuando han pasado cinco segundos. Después de cinco segundos, la actividad ha tenido lugar y la regla debería activarse. Nuestro módulo puede tener este aspecto:

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

Ahora, ¿qué sucede si queremos que el usuario de Adobe Experience Platform Launch pueda configurar la duración? En nuestra vista permitiremos al usuario introducir una duración y, a continuación, guardar la duración en el objeto de configuración. El objeto podría tener este aspecto:

{
  "duration": 25000
}

Para poder funcionar con la duración definida por el usuario, nuestro módulo debería cambiar a esto:

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

Paso de datos de evento contextual

Al activar una regla, suele ser útil proporcionar detalles adicionales sobre el evento que se produjo. Los usuarios que crean reglas pueden encontrar útil esta información para lograr un determinado comportamiento. Por ejemplo, supongamos que un experto en marketing desea crear una regla en la que se envíe una baliza de análisis cada vez que el usuario realice un barrido en la pantalla. Si nuestra extensión proporciona un tipo de evento swipe, el experto en marketing podría utilizar nuestro tipo de evento para activar la regla de manera adecuada. Ahora, ¿qué sucede si el experto en marketing desea incluir en la baliza el ángulo concreto en el que se produjo el barrido? Esto sería difícil de hacer sin información adicional.

Para proporcionar información adicional sobre el evento que se produjo, pase un objeto al llamar a la función trigger. Por ejemplo:

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

El experto en marketing podría utilizar este valor en una baliza de análisis especificando el valor %event.swipeAngle% en un campo de texto. También pueden acceder a event.swipeAngle desde otros contextos (como una acción de código personalizado). No dude en incluir cualquier información de evento que pueda ser útil para el experto en marketing. Esta información es totalmente opcional.

nativeEvent

Si el tipo de evento se basa en un evento nativo (por ejemplo, si la extensión proporcionó un tipo de evento click), se recomienda configurar la propiedad nativeEvent de la siguiente manera:

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

Esto puede resultar útil para los expertos en marketing que intentan acceder a cualquier información del evento nativo, como las coordenadas del cursor.©

element

Si existe una relación sólida entre un elemento y el evento que se produjo, se recomienda configurar la propiedad element en el nodo DOM del elemento. Por ejemplo: supongamos que la extensión proporciona un tipo de evento click y que permite a los expertos en marketing modificar la configuración para que la regla se active únicamente si se selecciona un elemento con el ID de herobanner. En este caso, si el usuario hace clic en el banner principal, recomendamos llamar a trigger y establecer element en el nodo DOM del banner principal.

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

Respeto del orden de reglas

Platform Launch ofrece a los usuarios la posibilidad de ordenar reglas. Por ejemplo, un usuario puede crear dos reglas que utilicen el tipo de evento de cambio de orientación y podría querer personalizar el orden en que se activan las reglas. Supongamos que el usuario de Platform Launch especifica un valor de pedido de 2 para el evento de cambio de orientación en la regla A y un valor de pedido de 1 para el evento de cambio de orientación en la regla B. Esto indica que cuando la orientación cambia en un dispositivo móvil, la regla B debe activarse antes de la regla A (las reglas con valores de orden inferior deben activarse primero).

Como se mencionó anteriormente, la función exportada en nuestro módulo de evento se llamará una vez para cada regla que se haya configurado para utilizar nuestro tipo de evento. Cada vez que se llama a la función exportada, se pasa una función trigger única vinculada a una regla específica. En el escenario que se acaba de describir, se llamará una vez a nuestra función exportada con una función trigger asociada a la regla B y, a continuación, otra vez con una función trigger asociada a la regla A. La regla B es la primera porque el usuario le ha dado un valor de orden inferior al de la regla A. Cuando nuestro módulo de biblioteca detecta un cambio de orientación, es importante que llamemos a las funciones trigger en el mismo orden en que se proporcionaron al módulo de biblioteca.

En el código de ejemplo siguiente, observe que cuando se detecta un cambio de orientación, las funciones desencadenadoras se llaman en el mismo orden en que se proporcionaron a la función exportada:

var triggers = [];

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

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

Esto garantiza que se mantenga el orden especificado por el usuario.

Una implementación incorrecta sería aquella que llama a las funciones desencadenadoras en orden 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);
};

Las prácticas de programación natural suelen mantener el orden adecuado, pero es importante tener en cuenta las consecuencias y desarrollar en consecuencia,

En esta página

Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free
Adobe Summit Banner

A virtual event April 27-28.

Expand your skills and get inspired.

Register for free