API de eventos de servidor a servidor

  • Desarrolladores

Introducción

Esta API te permite enviar eventos que se produzcan fuera de la aplicación o en la aplicación, pero que no se envían a través del SDK de AppsFlyer. Por ejemplo, si tienes una interfaz web y una móvil, puedes registrar en AppsFlyer todos los eventos de ambos medios.

 Nota

El Tipo de contenido se debe configurar como application/json.

URL:https://api2.appsflyer.com/inappevent/{app_id}

Ejemplo de Android:https://api2.appsflyer.com/inappevent/com.appsflyer.myapp

Ejemplo en iOShttps://api2.appsflyer.com/inappevent/id123456789

Es importante prestar especial atención a que el ID de la aplicación en iOS contenga el encabezado "id" antes del ID. De lo contrario, la solicitud finaliza con HTTPS 200 OK, pero el evento no se registra.

 ¡Importante!

El tamaño máximo de la carga útil del JSON no debería exceder de 1K.

La carga de datos del JSON se debe pasar como secuencia y al valor del evento se le debe dar formato de secuencia.

Asegúrate de que la carga de datos del JSON incluya el parámetro "af_events_api" :"true"
Este parámetro garantiza que el evento esté estructurado como evento enriquecido para permitir la asociación automática de los valores del evento a varios partners.

A continuación se proporcionan varios ejemplos.

Método: POST

Encabezado - "authentication"= {dev-key}

La dev key se encuentra en  Panel de control >> Configuración de aplicación >> Dev Key

iOSAndroid
{
  "appsflyer_id": {AppsFlyer Device ID }, // e.g. 1415211453000-6513894
  "idfa":{idfa},
  "customer_user_id": {customer_user_id}, // Customer User ID optional parameter
  "bundle_id":{bundle_id},
  "eventName": {The event name}, // e.g. "af_purchase"
  "eventValue": {A JSON containing a rich in-app event value - must be stringfied},
  "{

    \"af_revenue\":\"6\",
    \"af_content_type\":\"wallets\",
    \"af_content_id\":\"15854\"

  }",
  "eventCurrency": {Event currency}, // e.g "USD"
  "ip": {device IP},
  "eventTime": {Event timestamp in UTC +0}, // e.g "2014-05-15 12:17:00.000"
  "af_events_api" :"true"
}

 Nota

Todos los caracteres reservados (https://tools.ietf.org/html/rfc3986#section-2.1) deben codificarse como porcentaje antes de formar la URI.

Parámetros

  1. Parámetros obligatoriosappsflyer_id (ID de dispositivo de AppsFlyer), eventName, eventValueaf_events_api
  2. Parámetros muy recomendables: idfa para iOS y advertising_id para Android.
    Si desea asignar sus eventos in-app de usuarios orgánicos a socios externos, estos parámetros son obligatorios. Además, hay características, como Audiencias, por ejemplo, que se basan en el ID del dispositivo para segmentar a sus usuarios y actualizar las redes.
  3. Opcional: eventValue puede tener un valor nulo; es decir, "eventValue":"", (no se necesitan espacios)
  4. Opcional: La dirección IP (ip) debe ser la IP del dispositivo móvil (mientras ocurre el evento)
  5. Opcional: El campo de ID de usuario de cliente (customer_user_id) es un parámetro de identificación del usuario, asignado al campo de ID de usuario del cliente en los reportes de datos sin procesar. La API del SDK de ID de usuario del cliente atribuye este valor automáticamente a todos los eventos in-app originados en el SDK. Asegúrate de incluir este campo con TODOS tus eventos S2S para disfrutar de la misma funcionalidad.

Preparación de datos para parámetros

La lógica de backend es necesaria para obtener ciertos valores para los parámetros mencionados anteriormente. A continuación encontrará el flujo recomendado para la obtención de estos valores:

Asignación de ID de AppsFlyer con ID de usuario de cliente

El ID de AppsFlyer es un parámetro obligatorio para el envío de eventos in-app de servidor a servidor. Para que le sea más fácil saber qué usuario ejecutó qué evento, implemente el siguiente flujo:

  1. Configure el ID de usuario de cliente cuando el usuario instala la aplicación.
  2. Descargue el reporte de raw data para instalaciones a través de datos de exportación o pull API.
  3. Obtenga el ID de AppsFlyer comparando el ID de usuario de cliente de sus sistemas internos con el ID de usuario de cliente del reporte de raw data.
  4. Asigne el ID de AppsFlyer al ID de usuario de cliente de su sistema interno (importante para uso futuro).

Una vez que asocie el ID de AppsFlyer al ID de usuario de cliente interno, podrá saber fácilmente qué usuario ejecutó qué evento. Así, podrá obtener el ID de AppsFlyer y otros valores (valor del evento, moneda del evento, hora del evento, etc.) y enviar el evento in-app de servidor a servidor.

Programación Temporal de los Eventos

Los eventos de servidor a servidor se pueden enviar en tiempo real o con una marca temporal del evento.

También puedes usar el parámetro opcional eventTime para especificar la hora a la que ocurre el evento (en zona horaria UTC +0). Si el parámetro no se incluye en el mensaje, AppsFlyer usará la marca temporal del mensaje HTTPS recibido. 

El formato de eventTime es: "yyyy-MM-dd HH:mm:ss.SSS" (p. ej. "2014-05-15 12:17:00.000")

Al enviar eventos con marcas temporales, para que estos eventos se registren con sus marcas de tiempo real (cuando realmente sucedieron), todas se deben enviar a AppsFlyer antes de las 02:00 AM (UTC+0) del día siguiente.

Los eventos con marcas temporales pasadas, que no se envían antes de las 2:00 AM se registran bajo la hora a la que se envían.

Evento con marca temporal enviada antes de las 2 AM UTC+0

Activación de evento: 2 de mayo @ 22:00

Evento enviado a los servidores de AppsFlyer: 3 de mayo @ 01:00

El evento se registra en la plataforma de AppsFlyer con la hora real a la que ocurrió el evento (2 de mayo @ 22:00).

Evento con marca temporal enviada después de las 2 AM UTC+0

Activación de evento: 2 de mayo @ 22:00

Evento enviado a los servidores de AppsFlyer: 4 de mayo @ 09:00

El evento se registra en la plataforma de AppsFlyer a la hora que se envía al servidor de AppsFlyer y no a la hora que ocurrió el evento (4 de mayo @ 09:00).

Evento con marcas temporales futuras

Los eventos enviados con marcas temporales futuras siempre se registran en AppsFlyer con la hora a la que se enviaron a AppsFlyer, y no a la hora de la marca temporal del evento incluida en la carga útil.

Sincronización de eventos - Línea de tiempo visual

Server-to-Server-Events.PNG

 Nota

El número máximo de solicitudes S2S es de 60K por minuto o 1K por segundo. Contacta a tu Gerente de Atención al Cliente si tienes requisitos diferentes.

Códigos de Respuesta del Servicio

200
Aceptar cuando el sistema de AppsFlyer haya procesado la solicitud.
401
No autorizado: cuando la clave incluida en el encabezado de autenticación no es la dev-key de esta aplicación.
400
Solicitud errónea: cuando la solicitud no cumplió por lo menos uno de los criterios de validación.
500
Error interno del servidor: esto indica un error en el servidor.

Si tus servidores están protegidos por un firewall, deberás agregar a la lista blanca las respuestas de los intervalos de direcciones IP de AWS para recibir los mensajes de respuesta.

Ejemplo de Mensaje de Solicitud

{
  "appsflyer_id": "1415211453000-6513894",
	"advertising_id": "38412345-8cf0-aa78-b23e-10b96e40000d",
	"eventName": "af_purchase",
	"eventValue": 
	"{
		\"af_revenue\": \"6\",
		\"af_content_type\": \"wallets\",
		\"af_content_id\": \"15854\",
		\"af_quantity\" :\"1\"
   }",
	"eventCurrency": "USD",
	"ip": "1.2.3.4",
	"eventTime": "2014-05-15 12:17:00.000",
	"af_events_api" :"true"
}


En este caso, AppsFlyer recibe un evento in-app S2S que representa un evento de compra con ingresos, así como propiedades adicionales tales como tipo de contenido, etc.

Casos especiales

Envío de ingresos negativos

Si desea enviar un evento con ingresos negativos (para eventos tales como una compra cancelada o un reembolso), puede especificar un valor negativo en el parámetro de ingresos. Por ejemplo:

{
  "appsflyer_id": "1415211453000-6513894",
	"advertising_id": "38412345-8cf0-aa78-b23e-10b96e40000d",
	"eventName": "cancel_purchase",
	"eventValue": 
	"{
		\"af_revenue\": \"-6\",
		\"af_content_type\": \"wallets\",
		\"af_content_id\": \"15854\",
		\"af_quantity\" :\"1\"
   }",
	"eventCurrency": "USD",
	"ip": "1.2.3.4",
	"eventTime": "2014-05-15 12:17:00.000",
	"af_events_api" :"true"
}

Envío de eventos sin valor de evento

Si quiere enviar eventos sin valor de evento, simplemente envíe una secuencia vacía al valor del evento: "event_value":""

De esta manera, AppsFlyer puede, según la configuración del anunciante, enviar tales eventos in-app enriquecidos a fuentes de medios con fines avanzados de targeting, optimización y creación de audiencias.

Obtener el ID de Dispositivo de AppsFlyer

appsflyer_id es un parámetro obligatorio en los mensajes de eventos de servidor a servidor. AppsFlyer usa este parámetro para atribuir el evento al dispositivo original y a la fuente de medios atribuida. 

Hay varias formas de obtener este ID.

  1. Desde el dispositivo móvil, usando la API del SDK de AppsFlyer (Android/iOS)
  2. Mediante la API Pull o Push (haga clic en el enlace para obtener más información sobre la API Push o la API Pull)
  3. Exporte el reporte de instalación de raw data

 Consejo

Cuando pruebes mensajes S2S, si estás usando raw data o las API Push o Pull, busca el registro con la fuente de medios "s2s_test". Este es tu dispositivo de prueba y su ID de dispositivo de AppsFlyer es el ID que necesitas.

Diferencia entre orgánicos y no orgánicos

Cuando envía eventos in-app S2S, AppsFlyer automáticamente asocia los datos adicionales con los eventos. Los datos adicionales provienen del evento de instalación que precede a los eventos in-app. 

Esto significa que algunos datos que AppsFlyer asocia con eventos in-app S2S no orgánicos no se asocian con eventos in-app S2S orgánicos.

 Ejemplo

Por ejemplo, si se comparan los reportes de datos sin procesar de eventos in-app S2S orgánicos y no orgánicos, se observa que los eventos no orgánicos contienen datos que no los orgánicos no.

Los eventos in-app no orgánicos contienen datos sobre la fuente de medios, la campaña, el tipo de toque atribuido y la hora de toque atribuido.

Por otra parte, los eventos in-app orgánicos siguen una instalación orgánica. La instalación orgánica no tiene datos asociados a la campaña, las fuentes de medios o el tipo y la hora de toque atribuido. 

¿Fue útil este artículo?
Usuarios a los que les pareció útil: 4 de 12

Contenido de la página: