Enlace al repositorio de
GitHub

Integración del SDK de AppsFlyer con Epic C++

AppsFlyer permite a los marketers de gaming tomar mejores decisiones al proporcionarles potentes herramientas que resuelven puntos problemáticos reales, incluyendo atribución multiplataforma, análisis móvil y web, enlaces profundos, detección de fraude, gestión y preservación de la privacidad, y más.

Game attribution requires the game to communicate with AppsFlyer APIs over HTTPS and report user activities like first opens, consecutive sessions, and in-app events. For example, purchase events.
We recommend you use this sample app as a reference for integrating the code that reports user activities in your C++.

Note: The sample code that follows is currently only supported in a Windows environment.

Prerequisites

Paquetes vcpkg openssl y nlohmann-json:

vcpkg install curl:x86-windows
vcpkg install nlohmann-json:x86-windows
vcpkg install openssl:x86-windows

AppsflyerLauncherModule - Interfaz

AppsflyerLauncherModule.h, incluido en appsflyer-module , contiene el código y la lógica necesarios para conectarse a los servidores de AppsFlyer y reportar eventos.

Init

Este método recibe tu clave API e ID de aplicación e inicializa el módulo AppsFlyer.

Firma de método

void Init(const char* devkey, const char* appID)

Usage:

AppsflyerLauncherModule()->Init(<< DEV_KEY >>, << APP_ID >>);

Arguments:

  • EPIC_APP_ID: Your Epic app id.
  • DEV_KEY: puedes obtenerlo del marketer o en AppsFlyer HQ.

Start

Este método envía las solicitudes de primeros inicios/sesiones a AppsFlyer.

Firma de método

void Start(bool skipFirst = false)

Argumentos

  • bool skipFirst: Determines whether or not to skip first open events and send session events. The value is false by default. If true , first open events are skipped and session events are sent. See example

Usage:

// without the flag
AppsflyerLauncherModule()->Start();

// with the flag
bool skipFirst = [SOME_CONDITION];
AppsflyerLauncherModule()->Start(skipFirst);

Stop

This method stops the SDK from functioning and communicating with AppsFlyer servers. It's used when implementing user opt-in/opt-out.

Firma de método

void Stop()

Usage:

// Starting the SDK
AppsflyerLauncherModule()->Start();
// ...
// Stopping the SDK, preventing further communication with AppsFlyer
AppsflyerLauncherModule()->Stop();

LogEvent

Este método recibe un nombre de evento y un objeto json y envía eventos in-app a AppsFlyer.

Firma de método

void LogEvent(std::string event_name, json event_values, json custom_event_values = {})

Argumentos

  • std::string event_name-
  • json event_parameters: dictionary object which contains the predefined event parameters.
  • json event_custom_parameters (non-mandatory): dictionary object which contains the any custom event parameters. For non-English values, please use UTF-8 encoding.

Usage:

// Setting the event values json and event name
std::string event_name = "af_purchase";
json event_parameters = { {"af_currency", "USD"}, {"af_revenue", 24.12} };
// Send LogEvent request
AppsflyerLauncherModule()->LogEvent(event_name, event_parameters);

// Send LogEvent request with custom event params and UTF8 encoding (for non-English characters)
std::wstring ws = L"車B1234 こんにちは";
std::wstring ws2 = L"新人邀约购物日";
json custom_event_parameters = { 
    {"goodsName", AppsflyerLauncherModule()->to_utf8(ws)}, 
    {"goodsName2", AppsflyerLauncherModule()->to_utf8(ws2)} 
};
AppsflyerLauncherModule()->LogEvent(event_name, event_parameters, custom_event_parameters);

Nota: Para utilizar JSON, asegúrate de usar las siguientes importaciones:

#include <nlohmann/json.hpp>
using json = nlohmann::json;

SetCustomerUserId

This method sets a customer ID that enables you to cross-reference your unique ID with the AppsFlyer unique ID and other device IDs. Note: You can only use this method before calling Start().
The customer ID is available in raw data reports and in the postbacks sent via API.

Firma de método

void SetCustomerUserId(std::string cuid)

Arguments:

  • std::string cuid: Custom user id.

Usage:

AppsflyerLauncherModule()->Init(DEV_KEY, APP_ID);
AppsflyerLauncherModule()->SetCustomerUserId("Test-18-9-23");
AppsflyerLauncherModule()->Start();

SetSharingFilterForPartners

This method lets you configure which partners should the SDK exclude from data-sharing. Partners that are excluded with this method will not receive data through postbacks, APIs, raw data reports, or any other means.

Firma de método

void SetSharingFilterForPartners(std::string sharingFilter)

Arguments:

  • std::string sharingFilter: a list of partners to filter. For example: std::string list = "[\"partner1\",\"partner2\"]".
    Please use [\"all\"] in order to not send the event to any source.

Usage:

AppsflyerLauncherModule()->Init(DEV_KEY, APP_ID);

// set the sharing filter for partners a, b & c. please use ["all"] in order to not send the event to any source.
AppsflyerLauncherModule()->SetCustomerUserId("[\"a\",\"b\",\"c\"]");

// start the SDK (send firstopen/session request)
AppsflyerLauncherModule()->Start();

OnCallbackSuccess, OnCallbackFailure

Los métodos anteriores son marcadores de posición para las acciones deseadas en caso de éxito/fracaso.
Es posible manejar diferentes tipos de eventos con el switch case del contexto dentro de cada función (“FIRST_OPEN_REQUEST”, ”SESSION_REQUEST”, ”INAPP_EVENT_REQUEST”).

Firma de método

void OnCallbackSuccess(long responseCode, uint64 context)
void OnCallbackFailure(long responseCode, uint64 context)

GetAppsFlyerUID

Obtén el ID de dispositivo único de AppsFlyer. El SDK genera un ID de dispositivo único de AppsFlyer tras la instalación de la aplicación. Cuando se inicia el SDK, este ID se registra como el ID de la primera instalación de la aplicación.

Firma de método

std::string GetAppsFlyerUID()

Usage:

AppsflyerLauncherModule()->GetAppsFlyerUID();

To_utf8

This method receives a reference of a std::wstring and returns UTF-8 encoded std::string

Firma de método

std::string to_utf8(std::wstring& wide_string);

Usage:

std::wstring ws = L"車B1234 こんにちは";
std::wstring ws2 = L"新人邀约购物日";
custom_event_parameters = { 
    {"goodsName", AppsflyerLauncherModule()->to_utf8(ws)}, 
    {"goodsName2", AppsflyerLauncherModule()->to_utf8(ws2)} 
};

IsInstallOlderThanDate

This method receives a date string and returns true if the game exe modification date is older than the date string. The date string format is: "2023-January-01 23:12:34"

Firma de método

bool IsInstallOlderThanDate(std::string datestring)

Arguments:

  • std::string datestring: Date string in yyyy-mm-ddThh:mm:ss+hh:mm format.

Usage:

// the modification date in this example is "2023-January-23 08:30:00"

// will return false
bool dateBefore = AppsflyerLauncherModule()->IsInstallOlderThanDate("2023-January-01 23:12:34");

// will return true
bool dateAfter = AppsflyerLauncherModule()->IsInstallOlderThanDate("2023-April-10 23:12:34");

// example usage with skipFirst -
// skipping if the install date is NOT older than the given date
bool isInstallOlderThanDate = AppsflyerLauncherModule()->IsInstallOlderThanDate("2023-January-10 23:12:34");
AppsflyerLauncherModule()->Start(!isInstallOlderThanDate);

Ejecución de la aplicación de muestra

  1. Instala Visual Studio.
  2. Abre la solución.
  3. Abre la carpeta AppsflyerSampleApp.cpp file.
  4. En la línea 112, reemplaza DEV_KEY and APP_ID con los detalles de tu aplicación.
  5. Ejecuta la aplicación haciendo clic en Play (Reproducir) en la barra de herramientas superior (Depurador local de Windows). Asegúrate de que el modo esté configurado en Depurar.
  6. Después de 24 horas, el panel de control se actualiza y muestra las instalaciones orgánicas y no orgánicas y los eventos in-app.

Implementar AppsFlyer en tu aplicación C++

Setup

  1. Copia los archivos desde la carpeta appsflyer-module a tu proyecto C++ en Archivos de encabezado > AppsFlyer.
  2. Importa el módulo:
#include "AppsflyerLauncherModule.h"
  1. Importar nlohmann-json:
#include <nlohmann/json.hpp>
using json = nlohmann::json;
  1. Inicializa e inicia la integración de AppsFlyer.
  2. Reporta los eventos in-app.

Resetting the attribution

Remove the registry data from SOFTWARE\Microsoft\Windows\CurrentVersion\Run. The Registry keys are AF_counter_[APPID] and AF_uuid_[APPID].

Deleting AppsFlyer data on uninstall

When uninstalling your app, please make sure to remove the registry data from SOFTWARE\Microsoft\Windows\CurrentVersion\Run. The Registry keys are AF_counter_[APPID] and AF_uuid_[APPID].