Native PC C++
Ссылка на репозиторий
GitHub
AppsFlyer Native PC C++ SDK integration
AppsFlyer позволяет маркетологам игровых приложений принимать оптимальные решения, предоставляя высокоэффективные инструменты для решения проблем, таких как кросс-платформенная атрибуция, мобильная и веб-аналитика, диплинкинг, обнаружение мошенничества, контроль и защита конфиденциальности и многое другое.
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
Пакеты vcpkg openssl & nlohmann-json:
vcpkg install curl:x86-windows
vcpkg install nlohmann-json:x86-windows
vcpkg install openssl:x86-windows
AppsflyerLauncherModule — интерфейс
AppsflyerLauncherModule.h
в папке appsflyer-module
содержит необходимый код и логику для подключения к серверам AppsFlyer и передачи отчетов по событиям.
Init
Данный метод содержит ваш ключ API и идентификатор приложения и инициализирует модуль AppsFlyer.
Сигнатура метода
void Init(const char* devkey, const char* appID)
Usage:
AppsflyerLauncherModule()->Init(<< DEV_KEY >>, << APP_ID >>);
Arguments:
APP_ID
: Your app id (excluding thenativepc-
).DEV_KEY
: получите у маркетолога или AppsFlyer HQ.
Start
Данный метод передает запросы «first open/session» в AppsFlyer.
Сигнатура метода
void Start(bool skipFirst = false)
Аргументы
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.
Сигнатура метода
void Stop()
Usage:
// Starting the SDK
AppsflyerLauncherModule()->Start();
// ...
// Stopping the SDK, preventing further communication with AppsFlyer
AppsflyerLauncherModule()->Stop();
LogEvent
Этот метод получает имя события и объект JSON и отправляет внутренние события приложения в AppsFlyer.
Сигнатура метода
void LogEvent(std::string event_name, json event_values, json custom_event_values = {})
Аргументы
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);
Примечание. Чтобы использовать JSON, выполните следующий импорт:
#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.
Сигнатура метода
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();
OnCallbackSuccess, OnCallbackFailure
Приведенные выше методы являются заполнителями желаемый действий в случае успеха/неудачи.
Для обработки событий различного типа можно использовать оператор switch case контекста внутри каждой функции. (“FIRST_OPEN_REQUEST”, ”SESSION_REQUEST”, ”INAPP_EVENT_REQUEST”).
Сигнатура метода
void OnCallbackSuccess(long responseCode, uint64 context)
void OnCallbackFailure(long responseCode, uint64 context)
GetAppsFlyerUID
Получение от AppsFlyer уникального идентификатора устройства. SDK генерирует уникальный идентификатор устройства AppsFlyer при установке приложения. При запуске SDK этот идентификатор записывается как идентификатор первой установки приложения.
Сигнатура метода
std::string GetAppsFlyerUID()
Usage:
AppsflyerLauncherModule()->GetAppsFlyerUID();
To_utf8
This method receives a reference of a std::wstring
and returns UTF-8 encoded std::string
Сигнатура метода
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"
Сигнатура метода
bool IsInstallOlderThanDate(std::string datestring)
Arguments:
std::string datestring
: Date string inyyyy-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);
Запуск примера приложения
- Установите Visual Studio.
- Откройте решение.
- Откройте папку
AppsflyerSampleApp.cpp
file. - On line 110, replace
DEV_KEY
andAPP_ID
данными вашего приложения. - Запустите приложение, нажав кнопку запуска на верхней панели инструментов («Local Windows Debugger»). Убедитесь, что выбран режим отладки.
- Через 24 часа дэшборд обновляется и отображает органические и неорганические установки и внутренние события приложения.
Внедрение AppsFlyer в ваше приложение C++
Setup
- Скопируйте файлы из папки
appsflyer-module
в свой проект C++ в разделе Header Files (Файлы заголовка) -> AppsFlyer. - Импортируйте модуль:
#include "AppsflyerLauncherModule.h"
- Импортировать
nlohmann-json
:
#include <nlohmann/json.hpp>
using json = nlohmann::json;
- Инициализируйте и запустите интеграцию AppsFlyer.
- Подайте отчет о внутренних событиях приложения.
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]
.
Изменения сохранены 5 месяцев назад