AppsFlyer SDK 对接 - Unity

Official_unity_logo.png

Current Unity SDK Version:  v4.16.2
Compatible with Android SDK v4.8.6 and iOS SDK v4.8.2

1. 概述

AppsFlyer 的 SDK 为 Android、iOS、 Windows Phone 以及众多其他移动开发平台提供移动应用安装和事件追踪功能。

您可以追踪安装、更新和互动以及应用安装之后的事件(包括应用内购买、游戏级别等),以评估 ROI 和用户互动水平。

在 Unity 平台上开发的应用,只需进行一次 AppsFlyer SDK 对接,即可追踪 Android 和 iOS 生成的应用。下面的指南详细说明了如何针对 iOS 和 Android 应用将 AppsFlyer SDK 集成到您的 Unity 代码中。

 注意

AppsFlyer 支持与 Unity OS version 5 以及更高版本的对接

 重要信息!

Unity 插件从 4.16.0 版起开始支持 Google Play Install Referrer API。如果您想使用新 Referrer API,请将该插件升级到 4.16.0 或更高版本。

2. 快速入门

2.1 下载 AppsFlyer 的 Unity 插件

您可以在 Github 上找到该插件:https://github.com/AppsFlyerSDK/Unity

以下是使用 AppsFlyer Unity 插件的对接说明。

2.2 安装插件

以下是 AppsFlyer 插件的安装说明。

  1. 将 AppsFlyerUnityPlugin.unitypackage 导入到您的 Unity 项目中。
  2. 打开 Assets >> Import Package >> Custom Package
  3. 选择 AppsFlyerUnityPlugin.unitypackage 文件。

2.3 Android 和 iOS 的必要设置

Android 设置


给 AndroidManifest.xml 设置 AF receiver 和权限:

// receiver should be inside the <application> tag
<receiver android:name="com.appsflyer.MultipleInstallBroadcastReceiver" android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
//Mandatory permission:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />

2.4 设置所需的权限

AndroidManifest.xml 包含以下权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- Optional : -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />


在 AndroidManifest.xml 中设置 BroadcastReceiver

The following two options are available for implementing the install referrer broadcast receiver:

使用 Single Broadcast Receiver 使用 Multiple Broadcast Receiver

If you do not have a receiver listening on the INSTALL_REFERRER, in the AndroidManifest.xml, add the following receiver within the application tag:

<receiver android:name="com.appsflyer.SingleInstallBroadcastReceiver" android:exported="true">
    <intent-filter>
         <action android:name="com.android.vending.INSTALL_REFERRER" />
     </intent-filter>
</receiver>

iOS 设置


Linked Frameworks and Libraries


After building the project in Unity for xCode, you must add Security.Framework to xCode's Linked Frameworks and Libraries if the framework was not added previously.


iOS Apple Search Ads

添加以下框架:

AdSupport.framework
只有当您包含此框架时,AppsFlyer 才会收集 IDFA。不添加此框架就无法追踪 Facebook、Twitter 以及大多数其他广告平台。
iAd.framework

强烈建议您将此框架添加到您的应用项目中,因为该框架是追踪 Apple Search Ads 的必备条件。

3. SDK 初始化

In your Start / Init methods you set the AppsFlyer dev key and the unique app IDs used by iTunes and Google Play. Note that you need to set the iOS app ID here with digits only, without the "id" prefix.

Add the following code:

Unity 插件 4.15.1 以及更高版本 Unity 插件 4.14.3 以及更低版本
void Start () {
/* Mandatory - set your AppsFlyer’s Developer key. */
AppsFlyer.setAppsFlyerKey ("YOUR_APPSFLYER_DEV_KEY_HERE");
/* For detailed logging */
/* AppsFlyer.setIsDebug (true); */
#if UNITY_IOS
/* Mandatory - set your apple app ID
NOTE: You should enter the number only and not the "ID" prefix */
AppsFlyer.setAppID ("YOUR_APP_ID_HERE");
AppsFlyer.trackAppLaunch ();
#elif UNITY_ANDROID
/* Mandatory - set your Android package name */
AppsFlyer.setAppID ("YOUR_ANDROID_PACKAGE_NAME_HERE");
/* For getting the conversion data in Android, you need to add the "AppsFlyerTrackerCallbacks" listener.*/
AppsFlyer.init ("YOUR_DEV_KEY","AppsFlyerTrackerCallbacks");
#endif
}

 重要信息!

  • 对于 Android,AppsFlyer.init 包含对 trackAppLaunch 的调用。因此,在 Android 版的 Unity 插件中不要调用 trackAppLaunch
  • In iOS, the conversion data response is triggered in the AppsFlyerTrackerCallbacks.cs class.

4. 追踪应用内事件

应用内事件能够为您提供应用内所发生情况的深入分析。建议您花一点时间定义希望监测的事件,以追踪投资回报率 (ROI) 和用户生命周期价值 (LTV)。

追踪应用内事件是通过调用 trackEvent,将事件名称和数值参数传递过去来进行的。请参阅应用内事件文档了解更多详情。

 注意

应用内事件的名称长度不得超过 45 个字符。超过 45 个字符的事件名称不会出现在控制面板中,只会出现在原始数据、Pull API 和 Push API 中。


追踪事件示例:

System.Collections.Generic.Dictionary<string, string> purchaseEvent = new   
System.Collections.Generic.Dictionary<string, string> ();
purchaseEvent.Add ("af_currency", "USD");
purchaseEvent.Add ("af_revenue", "0.99");
purchaseEvent.Add ("af_quantity", "1");
AppsFlyer.trackRichEvent("af_purchase", purchaseEvent);

 注意

从 Unity SDK 4.15.1 版起,AppsFlyer 支持应用内事件或任何其他 SDK API 使用非英语字符。

5. 追踪深度链接

对于深度链接,请遵循操作系统对应的说明。

Android iOS
将以下内容添加到您的 manifest 文件中:

<activity android:name="com.appsflyer.GetDeepLinkingActivity" android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="your_scheme" />
</intent-filter>
</activity>

6. 追踪收入

作为应用内事件的一部分,使用 AFInAppEvents.REVENUE 事件参数来计算收入。您可以输入为正值或负值的任意数值。

 注意

AFEventParamRevenue(等同于使用 af_revenue)是 AppsFlyer 计算原始数据和控制面板上的真实收入的唯一事件参数。了解更多详细信息,请单击此处

 示例

收入应用内事件
AppsFlyer.trackRichEvent(AFInAppEvents.LEVEL_ACHIEVED, new Dictionary<string, string>(){
            {AFInAppEvents.CONTENT_ID, "1234567"},
            {AFInAppEvents.CONTENT_TYPE, "category_a"},
            {AFInAppEvents.REVENUE, "1.99"},
            {AFInAppEvents.CURRENCY, "USD"}
        });

7. 获取转化数据

AppsFlyer 允许您直接在 SDK 级别上实时访问用户转化数据。它使您能够定制全新安装后第一次打开应用时用户看到的登录页面。

从服务器载入 AppsFlyer 的转化数据:

  1. 添加一个空的 GameObject
  2. 将它附加到项目中包含的 AppsFlyerTrackerCallbacks.cs 中(必须将该 gameobject 命名为 AppsFlyerTrackerCallbacks)。
Android Unity 插件 > 4.15.1 Android Unity 插件 < 4.14.3 iOS
/*For getting the conversion data in Android, you need to add this listener. to the init() method*/
AppsFlyer.init ("YOUR_DEV_KEY","AppsFlyerTrackerCallbacks");


In Android, you can move the methods from AppsFlyerTrackerCallbacks.cs to another class, and call that class in your listener.

您必须使用在 AppsFlyerTrackerCallbacks 出现的完全相同的方法命名空间。

8. 用户标示符

获取 AppsFlyer Device ID

应用内的每次新安装都会创建一个 AppsFlyer 独有的 Device ID。使用下列 API 获取 AppsFlyer 独有的 ID:

public String getAppsFlyerId();


使用示例:

string AppsFlyerUID = AppsFlyer.getAppsFlyerId();

设置客户用户 ID

设置应用使用的用户 ID。 

要设置用户 ID,请调用以下方法:

AppsFlyer.setCustomerUserID("someId");

 注意

customerUserID 应在 trackAppLaunch 之前设置。建议您尽快设置自己的客户用户 ID,因为此 ID 只与设置后报告的事件关联。客户用户 ID 还可以用于完成与 MixpanelSwrve 等分析平台的对接。

了解客户用户 ID 的更多信息,请点击此处

设置用户电子邮件

Unity 当前不提供此功能。

Google Advertising ID

From SDK Version 4.8.0 AppsFlyer automatically collects the google_advertising_id. The requirement to collect the Google Advertising ID is only relevant for SDK versions 4.7.X and below.

IMEI 和 Android ID

如果操作系统版本高于 KitKat (4.4) 并且 App 包含 Google Play Services,SDK 在默认情况下不会收集 IMEI 和 Android ID。 

要将这些 ID 显式发送到 AppsFlyer,开发者可以使用以下 API:

AppsFlyer.setAndroidIdData(string)
AppsFlyer.setImeiData(string)


如果应用不包含 Google Play Services,则 SDK 将收集 IMEI 和 Android ID。

开发者可以使用这些 API 停止收集 IMEI 和 Android ID:

AppsFlyer.setCollectAndroidID(bool) 
AppsFlyer.setCollectIMEI(bool)

 警告

为了进行正确归因,必须至少收集一个设备标示符,即 GAID、Android ID 或 IMEI。

IDFA 和 IDFV

如果 AdSupport.framework 包含在应用中,则 AppsFlyer 会自动收集 IDFA(广告主 ID)和 IDFV(厂商 ID)。

9. 可选功能

追踪卸载

关于卸载,请遵循操作系统对应的说明。

Android - Firebase Android - GCM iOS
1.  从下面的地址下载 Unity Firebase SDK:https://firebase.google.com/docs/unity/setup。 
2.  将 FirebaseMessaging.unitypackage 导入项目。
3.  将 google-services.json 导入到项目中(从 Firebase 控制台获取)

 注意

Manifest 接收器应由 Unity Firebase SDK 自动添加。


4.  In the Unity class handling the AppsFlyer code, add the following:
使用 Firebase.Messaging;
使用 Firebase.Unity;

5.  添加到 Start() 方法:
Firebase.Messaging.FirebaseMessaging.TokenReceived += OnTokenReceived;

6.  添加以下方法:
public void OnTokenReceived
(object sender, Firebase.Messaging.TokenReceivedEventArgs token) { AppsFlyer.updateServerUninstallToken (token.Token); }

 

 警告

实施 Unity Firebase SDK 的用户不得将以下方法调用添加到 enableUninsatallTracking(“SenderID”) 中,因为 Firebase SDK 将从之前已经添加的 google-services.json 文件中获取发送者的 ID。添加此方法可能导致 Android 发出调试警告。

追踪推送通知 

推送通知是访客找回营销活动的一部分,AppsFlyer 使您能够对其进行监测。

handlePushNotification(Dictionary<string, string> payload)

The data payload should include an object: af with the relevant key-value string:

示例:

\"data\": { \"score\": \"5x1\", \"time\": \"15:10\" , \"af\" : { \"c\" : \"test_campaign\" , \"is_retargeting\" : \"true\" , \"pid\" : \"push_provider_int\" } } }"[with deep-linking] \"data\": { \"score\": \"5x1\", \"time\": \"15:10\", \"click_action\" : \"com.example.someAction\", 
\"af\" : { \"c\" : \"test_campaign\" , \"is_retargeting\" : \"true\" , \"pid\" : \"push_provider_int\" } } }"

 注意

了解关于推送通知监测的更多信息,请阅读此处

交叉促销追踪 

Unity 当前不提供此功能。

用户邀请追踪

Unity 当前不提供此功能。

设置货币代码 

除了可以作为各个应用内事件的一部分发送到 AppsFlyer 的特定货币代码外,您还可以使用下面的 API 设置全球货币代码。全球货币代码在当 af_currency

AFInAppEvents.CURRENCY

并未作为应用内事件的一部分发送时使用。

默认值为 USD。您可以在这里找到 API 可用的 ISO 货币代码。

使用以下 API 设置货币代码:

public void setCurrencyCode(String currencyCode);

使用示例:

setCurrencyCode(string currencyCode)

应用内购买验证

关于应用内购买接收验证,遵守操作系统对应的说明。

Android 调用 调用 Listener (仅 Android) iOS
//To get the callbacks
//AppsFlyer.createValidateInAppListener("AppsFlyerTrackerCallbacks", 
"onInAppBillingSuccess", "onInAppBillingFailure"); AppsFlyer.validateReceipt(stringpublicKey, string purchaseData,
string signature, string price, string currency, Dictionary additionalParametes);

The validate purchase response is triggered in the AppsFlyerTrackerCallbacks.cs class

Opt Out 

AppsFlyer 为您提供了在 AppsFlyer 分析中剔除特定用户的方法。该方法符合最新的隐私要求并遵守 Facebook 数据和隐私政策。默认为 false,表示默认启用追踪。

Use this API during the SDK Initialization to explicitly opt-out:

public void setDeviceTrackingDisabled(boolean isDisabled);

使用示例:

AppsFlyer.setDeviceTrackingDisabled(true);
可以通过再次调用 deviceTrackingDisabled,并设置为 false,重新启动追踪。

 警告

剔除用户会严重影响您的归因信息。
只在法律要求您不得收集用户信息的地区使用此选项。

Custom Time Between Sessions

Unity 当前不提供此功能。

Utility 应用的后台互动

Unity 当前不提供此功能。

追踪店外应用 

 注意

Google Play 为默认应用商店。如果您的应用只在 Google Play 上发布,请跳过这一部分。

要追踪 Google Play 商店外的安装,请在应用的 AndroidManifest.xml 中设置渠道/商店,各 APK 应具有唯一的渠道或商店名称。CHANNEL 的值区分大小写。

<示例

<meta-data android:name="CHANNEL" android:value="Amazon" />
<meta-data android:name="CHANNEL" android:value="Standalone"/>
<meta-data android:name="CHANNEL" android:value="Verizon" />

 注意

You must configure the CHANNEL value at the AppsFlyer dashboard when setting up the app.

将元数据标签置于 </application> 前。

了解关于如何追踪店外应用安装的更多详细信息,请阅读此处

Setting Additional Data

The setAdditionalData API is required to integrate on the SDK level with several external partner platforms, including Segment, Adobe and Urban Airship. Use this API only if the integration article of the platform specifically states setAdditionalData API is needed.
The following is a code example for implementing setAdditionalData on Unity:

Dictionary<string, string> CustomDataMap = new Dictionary<string, string>();
CustomDataMap.Add("custom_param_1", "value_of_param_1");

AppsFlyer.setAdditionalData(CustomDataMap);

10. 测试您的对接

查看按照操作系统测试对接的说明,请单击  Android 测试 或 iOS 测试

11. Unity 示例项目

要查看 Unity 示例项目,请单击此处

这篇文章有帮助吗?
4 人中有 1 人觉得有帮助

评论

0 条评论

登录写评论。

此组别内的文章