Интеграция AppsFlyer SDK — Android

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. Это руководство содержит подробные инструкции по интеграции AppsFlyer SDK в приложения Unity для использования с приложениями iOS и Android.

 Примечание

AppsFlyer поддерживает интеграцию с ОС Unity версии 5 и более новыми версиями.

 Важно!

Google Play Install Referrer API is supported starting from Unity Plugin v 4.16.0. If you want to use the new Referrer API, update the plugin to version 4.16.0 or above.

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


Setting the AF receiver and permissions to the AndroidManifest.xml:

// 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" />


Setting the Required Permissions

Файл 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" />


Setting the BroadcastReceiver in AndroidManifest.xml

Есть два варианта реализации приемника широковещательных сообщений об источнике установки (параметр referrer):

Использование одного приемника широковещательных сообщений Использование нескольких приемников широковещательных сообщений

Если в файле AndroidManifest.xml для INSTALL_REFERRER не зарегистрирован приемник, добавьте следующий приемник в тег <application>:

<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 Поиск объявлений.

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
}

 Важно!

  • For Android, AppsFlyer.init includes calling trackAppLaunch. Therefore, do not call trackAppLaunch in the Android build of the Unity plugin.
  • In iOS, the conversion data response is triggered in the AppsFlyerTrackerCallbacks.cs class.

4. Отслеживание внутренних событий приложения

Отслеживая внутренние события приложения, можно понять, что в нем происходит. Рекомендуется заранее определить список событий, метрики которых могут понадобиться для отслеживания ROI (окупаемость инвестиций) и LTV (пожизненная ценность пользователя).

Для отслеживания событий внутри приложения используется вызов trackEvent с именем события и значениями параметров. Подробные сведения см. в статье "События внутри приложения".

 Примечание

Имя внутреннего события приложения должно содержать не более 45 символов. Имена событий, в которых более 45 символов, не отображаются на панели управления. Их можно увидеть только в необработанных данных, полученных с помощью Push и Pull API.


Tracking Event Example:

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);

 Примечание

AppsFlyer supports non-English characters with in-app events, or with any other SDK API, starting from Unity SDK version 4.15.1.

5. Отслеживание диплинков

Для реализации отслеживания удалений следуйте указаниям для вашей операционной системы.

Android iOS
Add the following to your manifest file:

<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 для подсчета выручки как внутреннего события приложения. Этому параметру можно назначить любое числовое значение — положительное или отрицательное.

 Примечание

AFInAppEvents.REVENUE (равносильно использованию 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 создает уникальный ID устройства. Для получения уникального ID из AppsFlyer используйте следующий API:

public String getAppsFlyerId();


Usage Example:

string AppsFlyerUID = AppsFlyer.getAppsFlyerId();

Установка Customer User ID

Установите ID пользователя, используемый приложением. 

Чтобы задать ID пользователя, вызовите следующий метод:

AppsFlyer.setCustomerUserID("someId");

 Примечание

Идентификатор customerUserID ДОЛЖЕН быть задан перед trackAppLaunch/init. Рекомендуется установить свой Customer User ID как можно скорее, т.к. только этот идентификатор будет связан с событиями, включенными в отчеты после его установки. Customer User ID можно также использовать для интеграции с аналитическими платформами (такими, как Mixpanel и Swrve).

Подробные сведения о Customer User ID см. здесь.

Установка User Email

В настоящее время в Unity это недоступно.

Google Advertising ID

AppsFlyer SDK, начиная с версии 4.8.0, автоматически выполняет сбор идентификаторов рекламы Google google_advertising_id. Требование включать сбор идентификаторов рекламы Google относится только к SDK версии 4.7.X или более старых версий.

IMEI и Android ID

Если приложение работает в ОС версии выше KitKat (4.4) и использует службы Google Play, то по умолчанию SDK не проводит сбор данных IMEI и Android ID.  

Чтобы отправить эти идентификаторы в AppsFlyer, разработчики могут использовать такие API:

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


If the app does NOT contain Google Play Services the IMEI and Android ID are collected by the SDK.

Для отмены сбора данных IMEI и Android ID разработчики могут использовать такие API:

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.  Download the Unity Firebase SDK from: https://firebase.google.com/docs/unity/setup
2.  Import FirebaseMessaging.unitypackage into the project.
3.  Import google-services.json into the project (obtained in the Firebase console)

 Примечание

Firebase SDK для Unity должен автоматически добавить приемники, заданные в манифесте.


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

5.  Add to the Start() method:
Firebase.Messaging.FirebaseMessaging.TokenReceived += OnTokenReceived;

6.  Add the following method:
public void OnTokenReceived
(object sender, Firebase.Messaging.TokenReceivedEventArgs token) { AppsFlyer.updateServerUninstallToken (token.Token); }

 

 Предупреждение

Users who implement the Unity Firebase SDK should not add the following method call to enableUninstallTracking(“SenderID”) as the Firebase SDK will obtain the sender ID from the google-services.json file we have added earlier. Adding this method might cause a debug warning from Android.

Отслеживание Push-уведомлений 

С помощью AppsFlyer можно выполнять измерения push-уведомлений при проведении ретаргетинговой кампании.

handlePushNotification(Dictionary<string, string> payload)

Полезные данные должны включать в себя объект af и строку с соответствующим ключевым значением:

Пример:

\"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\" } } }"

 Примечание

Подробные сведения об измерении push-уведомлений см. здесь.

Отслеживание кампаний перекрестной рекламы 

В настоящее время в Unity это недоступно.

Отслеживание приглашений пользователей

В настоящее время в Unity это недоступно.

Установка кода валюты 

Кроме кодов конкретных валют, которые используются в каждом внутреннем событии приложения, которое передается в AppsFlyer, можно установить код глобальной валюты. Код глобальной валюты используется в тех случаях, когда параметр af_currency

AFInAppEvents.CURRENCY

не передается вместе с данными события внутри приложения.

По умолчанию используется код USD. Коды валют по стандарту ISO см. здесь.

Для установки кода валюты используйте этот API:

public void setCurrencyCode(String currencyCode);

Пример использования:

setCurrencyCode(string currencyCode)

Валидация покупок в приложении

Для реализации валидации чеков при покупках из приложения следуйте указаниям для вашей операционной системы.

Вызов в Android Вызов слушателя (Только в Android) Вызов в iOS
//To get the callbacks
//AppsFlyer.createValidateInAppListener ("AppsFlyerTrackerCallbacks", 
"onInAppBillingSuccess", "onInAppBillingFailure"); AppsFlyer.validateReceipt(string publicKey, string purchaseData,
string signature, string price, string currency, Dictionary additionalParametes);

Отклик на вызов при валидации покупки инициируется в классе AppsFlyerTrackerCallbacks.cs

Opt Out 

AppsFlyer provides you a method to opt-out specific users from AppsFlyer analytics. This method complies with the latest privacy requirements and complies with Facebook data and privacy policies. Default is false, meaning tracking is enabled by default.

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

public void setDeviceTrackingDisabled(boolean isDisabled);

Пример использования:

AppsFlyer.setDeviceTrackingDisabled(true);
Tracking can be restarted by calling deviceTrackingDisabled again set to false.

 Предупреждение

Opting out users SEVERELY hurts your attribution information.
Use this option ONLY for regions which legally prevent you from collecting your users' information.

Настройка временного интервала между сеансами

В настоящее время в Unity это недоступно.

Фоновые сеансы для служебных приложений

В настоящее время в 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" />

 Примечание

Значение CHANNEL задается на панели управления AppsFlyer во время настройки приложения.

Тег метаданных необходимо поместить перед тегом </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 см. здесь.

Была ли эта статья полезной?
Пользователи, считающие этот материал полезным: 0 из 3

Комментарии

0 комментариев

Войдите в службу, чтобы оставить комментарий.

Статьи в этом разделе