# AppsFlyer
# 支持的平台
- Android
- iOS
- 其它平台是空的实现(Windows, Linux, ...)
# 插件的架框实现
# 使用
- 初始化 SDK
在游戏启动后, 尽可能早的初始化 SDK .
setListener
应该在 init
之前调用.

这是一个初始化的样例代码. 从这儿我们可能知道以下信息:
- 调用
setListener
最好在init
之前 setAppID
,setDevKey
这两个必须是要调用的.- 其它的
setXXX
设置接口是可选的.
这里是 setListener
函数参数的样例

- 启动 AppsFlyer
你可以在游戏中的任何时候启动 Appsflyer. 如果可以, 应该越早越好.
setAppID
, setDevKey
, setDebug
, setCustomerUserID
这些设置应该在 start
之前调用.

- LogEvent 或其它
logEvent
, validateAndLogInAppPurchase
或其它方法可以在程序中按需调用.

- 停止 AppsFlyer
一般来讲, 你不需要调用这个接口. 但是确实需要, 你可以调用它.
# API
这里的 API 命名是依据 Appsflyer 的 API 接口而定的.
// init unreal plugin
static void init();
// AppsFlyer listener
static void setListener(const FAppsFlyerCallback& callback);
// appID can get from appsflyer.com
static void setAppID(const FString& appID);
// devkey can get from appsflyer.com
static void setDevKey(const FString& devKey);
// if enable debug
static void setDebug(bool b);
static void setAdditionalData(const FString& json);
static void getAppsFlyerUID(const FAppsFlyerCallbackGetUID& cb);
static void setCustomerUserID(const FString& userID);
static void anonymizeUser(bool b);
static void collectASA(bool b);
static void waitForATTUserAuthorizationWithTimeoutInterval(int seconds);
static void stop();
static void start();
static void logEvent(const FString& evt, const FString& json);
static void useReceiptValidationSandbox(bool b);
/*
* validateAndLogInAppPurchase param need a json string, like follow sample.
*
* Android Params Sample:
* {
"publicKey": "xxx",
"signature": "xxx",
"purchaseData": "xxx",
"price": "xxx",
"currency": "xxx",
"parameters": {
"k1": "v1",
"k2": "v2"
}
}
*
* iOS Params Sample:
* {
"productIdentifier": "xxx",
"transactionId": "xxx",
"price": "xxx",
"currency": "xxx",
"parameters": {
"k1": "v1",
"k2": "v2"
}
* }
*
*/
static void validateAndLogInAppPurchase(const FString& purchaseJson);
static void setMinTimeBetweenSessions(int seconds);
static void setResolveDeepLinkURLs(const TArray<FString>& urls);
static void setImeiData(const FString& data);
static void setAndroidIdData(const FString& data);
static void setCollectIMEI(bool b);
static void setCollectAndroidID(bool b);
static void setCollectOaid(bool b);
# 样例工程
这个工程的界面上有三个按钮.
- 初始化按钮
测试 Appsflyer 初始化, 设置参数.
一般来说, 开发者应该在游戏启动后就初始化 Appsflyer .
- 开始按钮
测试启动 Appsflyer , 启动后 appsfler 才真正开始工作(联接服务器, 发送获取数据). 启动 Appsflyer 应该在 init 操作之后.
- 停止按钮
测试停止 Appsflyer
大多数时侯, appsflyer 都不用调用停止.
# AppsFlyer 官方档
本插件的功能都是 Appsflyer 官方提供的. 开发者在使用时候, 应该以官方的文档为准.