API de eventos de servidor para servidor

A API de eventos de servidor para servidor permite o envio de eventos que não são enviados usando o SDK da AppsFlyer. Por exemplo, se você possui interfaces web e móvel, pode gravar eventos de ambos os meios na AppsFlyer usando a API de eventos de servidor para servidor. 

Eventos de servidor para servidor precisam ser preparados da seguinte maneira:

  • Tipo de conteúdo:definido como aplicativo/json.
  • Ponto final da URL:
    https://api2.appsflyer.com/inappevent/{app_id}
    • Exemplo em Android:
      https://api2.appsflyer.com/inappevent/com.appsflyer.myapp
    • Exemplo em iOS:
      https://api2.appsflyer.com/inappevent/id123456789
      Observação: o ID do aplicativo é o ID do iTunes do aplicativo. Certifique-se de que o ID do aplicativo no iOS contém um id principal antes do ID. Não fazer isso resulta em um código de retorno 200 OK válido, mas o evento não é registrado.
    • Exemplo no Windows:
      https://api2.appsflyer.com/inappevent/a1b2c3d4e5f6
      Observação: o ID do aplicativo é o ID do aplicativo na loja de aplicativos da Microsoft.
  • Tamanho máximo da carga do JSON: 1K 
  • O payload do JSON deve ser passado como uma string e o valor do evento deve estar em formato de string.
  • A carga do JSON deve incluir o parâmetro: "af_events_api" :"true"
    Este parâmetro garante que o evento seja estruturado como um evento avançado para habilitar o mapeamento automático dos valores dos eventos para vários parceiros.

Consulte os exemplos abaixo.

Método: POST

Cabeçalho – "autenticação"= {dev-key}

A chave do desenvolvedor encontra-se em Painel > Definições do aplicativo > Chave do desenvolvedor

iOS Android e Windows
{
  "appsflyer_id": {AppsFlyer Device ID }, // e.g. 1415211453000-6513894
  "idfa":{idfa},
  "customer_user_id": {customer_user_id}, // Customer User ID optional parameter
  "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"
}

 Observação

Todos os caracteres reservados (https://tools.ietf.org/html/rfc3986#section-2.1) devem ser codificados por porcentagem antes que a URI seja formada.

Parâmetros

Nome do parâmetro Tipo Descrição
appsflyer_id Obrigatório Atribui o evento a uma fonte de mídia e campanha.
eventName Obrigatório Especifica o nome do evento.
Valor do evento Recomendado Exceção: o parâmetro é obrigatório para calcular a receita.
af_events_api Obrigatório O valor deve ser verdadeiro.
idfa Recomendado Exceção: o parâmetro é obrigatório para enviar postbacks de eventos in-app para parceiros externos.

advertising_id

Recomendado

Exceção: o parâmetro é obrigatório para enviar postbacks de eventos in-app para parceiros externos.

ip Recomendado
  • Endereço de IP (ip) é o IP do dispositivo móvel (durante uma ocorrência de evento).
  • O endereço de IP determina o país do evento. Se nenhum endereço de IP for especificado, o campo país mostrará N/A nos dados brutos.
customer_user_id OPCIONAL O ID de usuário do cliente é usado para associar eventos in-app a usuários em sistemas de BI.

 

Preparação de dados para parâmetros

A lógica do back-end é necessária para obter certos valores para os parâmetros mencionados acima. Confira abaixo o fluxo recomendado para obter esses valores:

Mapeamento da ID da AppsFlyer com a ID de usuário cliente

A ID da AppsFlyer é um parâmetro obrigatório ao enviar eventos in-app de servidor para servidor. Para facilitar que você saiba qual usuário executou qual evento, implemente o fluxo abaixo:

  1. Defina a ID de usuário cliente quando o usuário instalar o aplicativo.
  2. Baixe o relatório de dados brutos de instalações por meio dos dados de exportação ou da API de pull
  3. Obtenha o ID da AppsFlyer combinando o ID de usuário cliente em seus sistemas internos com o ID de usuário cliente no relatório de dados brutos.
    Observação: você pode obter o ID da AppsFlyer de seus usuários do SDK da AppsFlyer integrado em seus aplicativos (Android/iOS)
  4. Mapeie a ID da AppsFlyer para a ID de usuário cliente em seu sistema interno (importante para uso futuro)

Após mapear a ID da AppsFlyer com sua ID de usuário cliente interna, você pode facilmente saber qual usuário executou qual evento. Você pode então obter a ID da AppsFlyer e outros valores (valor do evento, moeda do evento, hora do evento etc.) e enviar o evento in-app de servidor para servidor.

Cronometrar os eventos

Eventos de servidor para servidor podem ser enviados em tempo real ou com um carimbo de data hora do evento.

Você pode usar o parâmetro opcional eventTime para especificar a hora da ocorrência do evento (no fuso horário UTC +0). Se o parâmetro não for incluído na mensagem, o AppsFlyer usa o carimbo de data e hora da mensagem HTTPS recebida.

O formato de eventTime é: "aaaa-MM-dd HH:mm:ss.SSS" (por exemplo, "2014-05-15 12:17:00.000")

Ao enviar eventos com carimbos de data e hora, e para que esses eventos sejam registrados com seus carimbos em tempo real (quando realmente ocorreram), todos eles devem ser enviados para a AppsFlyer até as 2 h (UTC+0) do dia seguinte.

Eventos com carimbos de data e hora anteriores, os quais não são enviados até as 2 horas são registrados com a hora em que são enviados.

Evento com carimbo de data e hora enviado antes das 2 h UTC+0

Evento acionado: 2 de maio às 22h00

Evento enviado aos servidores do AppsFlyer: 3 de maio à 1h00

O evento é registrado na plataforma sob o tempo real em que o evento ocorreu (2 de maio às 22h00).

Evento com carimbo de data e hora enviado após as 2 h UTC+0

Evento acionado: 2 de maio às 22h00

Evento enviado aos servidores do AppsFlyer: 4 de maio às 9h00

O evento é registrado na plataforma no momento em que ele é enviado ao servidor da AppsFlyer e não na hora em que o evento ocorreu (4 de maio às 09:00).

Evento com carimbos de data e hora futuros

Eventos enviados com carimbos de data e hora futuros são sempre registrados na AppsFlyer com a hora em que são enviados para a AppsFlyer, e não com o carimbo de data e hora do evento na carga.

Eventos de tempo: linha do tempo visual

Server-to-Server-Events.PNG

 Observação

O número máximo de solicitações S2S é de 60K por minuto ou 1K por segundo. Entre em contato com seu Gestor de sucesso do cliente se seus requisitos forem diferentes.

Códigos de retorno de serviço

200
OK quando a solicitação foi processada pelo sistema da Appsflyer.
401
não autorizado quando a chave fornecida no cabeçalho de autenticação não é a chave de desenvolvedor para esse aplicativo.
400
Solicitação incorreta quando a solicitação falhou em pelo menos um dos critérios de validação
500
Erro interno do servidor indica um erro no servidor

Se seus servidores forem protegidos por um firewall, você precisará fazer uma lista de respostas seguras recebidas dos intervalos de endereço IP da AWS para receber as mensagens de retorno.

Exemplo de corpo de solicitação

{
  "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"
}


Neste caso, o AppsFlyer recebe um evento no aplicativo S2S que representa um evento de compra com receita, bem como propriedades adicionais, tais como tipo de conteúdo, etc.

Casos especiais

Envio de receitas negativas

Se você quiser enviar um evento com receita negativa (como compra cancelada ou reembolso), é possível especificar o valor negativo no parâmetro da receita. Por exemplo:

{
  "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"
}

Envio de eventos sem o valor do evento

Se você quiser enviar eventos sem o valor do evento, é só passar uma string vazia ao valor do evento: "event_value":""

Em seguida, o AppsFlyer é capaz, de acordo com a configuração do anunciante, de enviar esses eventos avançados no aplicativo para fontes de mídia para fins de direcionamento avançado, otimização e criação de público.

Buscar a ID do dispositivo AppsFlyer

appsflyer_id é um parâmetro obrigatório em mensagens de evento de servidor para servidor. A AppsFlyer usa esse parâmetro para atribuir o evento ao dispositivo original e à fonte de mídia atribuída. O ID pode ser obtido da seguinte maneira:

 Dica

Ao testar mensagens S2S, se você estiver usando dados brutos ou APIs push ou pull, procure o registro com fonte de mídia "s2s_test". Esse é o seu dispositivo de teste e essa ID de dispositivo AppsFlyer é a ID que você precisa.

Diferença entre orgânico e não orgânico

Ao enviar eventos in-app S2S, a AppsFlyer automaticamente associa dados adicionais aos eventos. Os dados adicionais vêm do evento de instalação que precede os eventos in-app. 

O que isso significa é que alguns dados que a AppsFlyer associa a eventos in-app S2S não orgânicos não estão associados a eventos in-app S2S orgânicos.

 Exemplo

Por exemplo, se você comparar relatórios de dados brutos de eventos in-app S2S não orgânicos e orgânicos, os eventos não orgânicos contêm dados que os eventos in-app não orgânicos não contêm.

Eventos in-app não orgânicos contém dados sobre a fonte de mídia, campanha, tipo de toque atribuído e hora do toque atribuído.

Eventos in-app orgânicos, por outro lado, seguem uma instalação orgânica. A instalação orgânica não possui dados relacionados a campanhas, fontes de mídia ou hora e tipo do toque atribuído. 

Este artigo foi útil?