Steam C++
Ссылка на репозиторий
GitHub
Интеграция SDK AppsFlyer в Steam C++
AppsFlyer позволяет маркетологам игровых приложений принимать оптимальные решения, предоставляя высокоэффективные инструменты для решения проблем, таких как кросс-платформенная атрибуция, мобильная и веб-аналитика, диплинкинг, обнаружение мошенничества, контроль и защита конфиденциальности и многое другое.
Для атрибуции игры игра должна обмениваться данными с API AppsFlyer по протоколу HTTPS и сообщать об активностях пользователя, например первом открытии, последовательных сессиях и внутренних событиях приложения. Например, события покупки.
Мы рекомендуем использовать этот пример приложения в качестве справки по интеграции кода, передающего отчеты об активностях пользователя, в ваше приложение C++. Примечание. Приведенный ниже пример кода на данный момент поддерживается только в среде Windows.
Prerequisites
- SDK Steamworks, интегрированный в ваш проект.
- Пакеты vcpkg openssl & nlohmann-json:
vcpkg install curl:x86-windows
vcpkg install nlohmann-json:x86-windows
vcpkg install openssl:x86-windows
AppsflyerSteamModule — интерфейс
AppsflyerSteamModule.h” в папке appsflyer-module
содержит необходимый код и логику для подключения к серверам AppsFlyer и передачи отчетов по событиям.
Init
Данный метод содержит ваш ключ API и идентификатор приложения и инициализирует модуль AppsFlyer.
Сигнатура метода
void Init(const char* devkey, const char* appID, bool collectSteamUid = true)
Usage:
// for regular init
AppsflyerSteamModule()->Init(<< DEV_KEY >>, << STEAM_APP_ID >>);
// for init without reporting steam_uid
AppsflyerSteamModule()->Init(<< DEV_KEY >>, << STEAM_APP_ID >>, false);
Arguments:
string STEAM_APP_ID
: находится в SteamDB.string DEV_KEY
: получите у маркетолога или AppsFlyer HQ.bool collectSteamUid
: Whether to collect Steam UID or not. True by default.
Start
Данный метод передает запросы «first open/session» в AppsFlyer.
Сигнатура метода
void Start(bool skipFirst = false)
Usage:
// without the flag
AppsflyerSteamModule()->Start();
// with the flag
bool skipFirst = [SOME_CONDITION];
AppsflyerSteamModule()->Start(skipFirst);
Stop
Once this method is invoked, our SDK no longer communicates with our servers and stops functioning.
Useful when implementing user opt-in/opt-out.
Сигнатура метода
void Stop()
Usage:
// Starting the SDK
AppsflyerSteamModule()->Start();
// ...
// Stopping the SDK, preventing further communication with AppsFlyer
AppsflyerSteamModule()->Stop();
LogEvent
Этот метод получает имя события и объект JSON и отправляет внутренние события приложения в AppsFlyer.
Сигнатура метода
void LogEvent(std::string event_name, json event_parameters)
Usage:
json event_parameters = { {"af_currency", "USD"}, {"af_price", 6.66}, {"af_revenue", 24.12} };
std::string event_name = "af_purchase";
AppsflyerSteamModule()->LogEvent(event_name, event_parameters);
Примечание. Чтобы использовать JSON, выполните следующий импорт:
#include <nlohmann/json.hpp>
using json = nlohmann::json;
SetCustomerUserId
Setting your own customer ID enables you to cross-reference your own unique ID with AppsFlyer’s unique ID and other devices’ IDs.
This ID is available in raw-data reports and in the Postback APIs for cross-referencing with your internal IDs.
Can be used only before calling Start()
.
Сигнатура метода
void SetCustomerUserId(std::string cuid)
Usage:
AppsflyerSteamModule()->Init(DEV_KEY, STEAM_APP_ID);
AppsflyerSteamModule()->SetCustomerUserId("Test-18-9-23");
AppsflyerSteamModule()->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:
AppsflyerSteamModule()->GetAppsFlyerUID();
IsInstallOlderThanDate
Этот метод получает строку даты и возвращает true, если дата изменения папки игры старше строки даты. Формат строки даты: "2023-January-01 23:12:34".
Сигнатура метода
bool IsInstallOlderThanDate(std::string datestring)
Usage:
// the modification date in this example is "2023-January-23 08:30:00"
// will return false
bool dateBefore = AppsflyerSteamModule()->IsInstallOlderThanDate("2023-January-01 23:12:34");
// will return true
bool dateAfter = AppsflyerSteamModule()->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 = AppsflyerSteamModule()->IsInstallOlderThanDate("2023-January-10 23:12:34");
AppsflyerSteamModule()->Start(!isInstallOlderThanDate);
Запуск примера приложения
- Установите Visual Studio.
- Откройте решение
../appsflyer-steam-sample-app/steam-sample-app/steamworksexample/SteamworksExample.sln
. - Откройте папку
Source Files/Main.cpp
file. - В строке 244 замените
DEV_KEY
andSTEAM_APP_ID
данными вашего приложения. - Запустите приложение, нажав кнопку запуска на верхней панели инструментов («Local Windows Debugger»). Убедитесь, что выбран режим отладки.
- Через 24 часа дэшборд обновляется и отображает органические и неорганические установки и внутренние события приложения.
Внедрение AppsFlyer в вашу игру для Steam
Setup
- Скопируйте файлы из папки
appsflyer-module
в свой проект C++ в разделе Header Files (Файлы заголовка) -> AppsFlyer. - Импортируйте модуль:
#include "AppsflyerSteamModule.h"
- Импортировать
nlohmann-json
.
#include <nlohmann/json.hpp>
using json = nlohmann::json;
- Initialize the AppsFlyer integration and call start.
- Подайте отчет о внутренних событиях приложения.
Удаление сохранений Steam Cloud (сброс атрибуции)
- Отключите Steam cloud.
- Удалите локальные файлы.
- Remove the registry data from
SOFTWARE\Microsoft\Windows\CurrentVersion\Run
. The Registry keys areAF_counter_[APPID]
andAF_uuid_[APPID]
.
Изменения сохранены 3 дня назад