Unity

Минимальные требования

Android

  • Android api level 14 (android 4.0).

  • Разрешение android.permission.INTERNET.

  • Разрешение android.permission.ACCESS_NETWORK_STATE.

  • Разрешение com.google.android.gms.permission.AD_ID.

  • Обязательно наличие в проекте библиотеки Google Play Services (модуль com.google.android.gms:play-services-ads-identifier).

  • Обязательно наличие в проекте библиотеки Google Play Install Referrer (модуль com.android.installreferrer:installreferrer).

iOS

  • iOS 9.0.

  • Подключенные фреймворки AdSupport, SystemConfiguration, CoreTelephony, CoreData, UIKit, iAd, StoreKit, AdServices.

  • Подключенная библиотека libz.tbd.

Интеграция

  • Импортируйте пакет myTracker.unitypackage (см. последнюю версию на https://github.com/myTrackerSDK/mytracker-unity/releases) в ваш Unity проект.

  • Для сборки Android версии необходимо добавить в проект зависимости с помощью Assets → Play Services Resolver → Android Resolver → Resolve Client Jars.

  • Для сборки iOS версии необходимо добавить зависимости с помощью CocoaPods, после создания xCode проекта.


AndroidManifest.xml

Средой Unity поддерживается слияние манифеста по умолчанию и манифестов, поставляемых вместе с различными плагинами. В случае ошибки или пост-обработки, возможно, потребуется ручное изменение манифеста Android-приложения. Для корректной работы в манифесте должны быть указаны разрешения:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>

Для отслеживания источников трафика в манифесте должны быть указаны сервис и ресивер:

<application>
    <receiver android:name="com.my.tracker.campaign.MultipleInstallReceiver"
              android:permission="android.permission.INSTALL_PACKAGES"
              android:exported="true">
        <intent-filter>
            <action android:name="com.android.vending.INSTALL_REFERRER"/>
        </intent-filter>
    </receiver>
    <service android:name="com.my.tracker.campaign.CampaignService" />

</application>

Proguard

Если вы используете Proguard, необходимо добавить исключения:

-keep class com.my.tracker.** { *; }
-dontwarn com.my.tracker.**
-keep class com.android.installreferrer.** { *; }
-keep class com.android.vending.billing.** { *; }
-keep class com.android.billingclient.api.** { *; }
-keep class com.google.android.gms.** { *; }

Cреда сборки Gradle обеспечивает импорт данных правил автоматически при обработке aar-файлов

Инициализация

Для корректной работы MyTracker SDK настройку и инициализацию трекера необходимо производить на начальном этапе инициализации приложения. Для инициализации трекера необходимо указать ваш SDK_KEY. До инициализации, при необходимости, можно настроить параметры трекера.

SDK_KEY генерируется автоматически после того, как вы добавите ваше приложение в MyTracker. Чтобы получить ключ, перейдите на страницу со списком приложений, выберите необходимое и во вкладке Обзор скопируйте ключ. Обратите внимание, что для сборки приложения на разных платформах необходим отдельный SDK_KEY для каждой из них.

public class YourMonoBehaviour : MonoBehaviour
{
    public void Awake()
    {
#if !UNITY_IOS && !UNITY_ANDROID
        return;
#endif

        // При необходимости настройте конфигурацию трекера
        var myTrackerConfig = MyTracker.MyTrackerConfig;
        // ...
        // Настройте параметры трекера
        // ...

        // Инициализируйте трекер в зависимости от платформы
#if UNITY_IOS
        MyTracker.Init("SDK_KEY_IOS");
#elif UNITY_ANDROID
        MyTracker.Init("SDK_KEY_ANDROID");
#endif
    }
}

API

Конфигурация трекера

Конфигурацию трекера можно настроить через экземпляр класса MyTrackerConfig, доступный через свойство MyTracker.MyTrackerConfig. Можно настраивать следующие параметры:

IsTrackingLaunchEnabled: отслеживание запусков приложения. По умолчанию true.

Boolean MyTrackerParams.IsTrackingLaunchEnabled { get; set; }

LaunchTimeout: интервал в секундах, в течение которого не будет засчитываться новый запуск и прерываться сессия при сворачивании приложения. По умолчанию 30 секунд. Можно установить значение в диапазоне 30-7200 секунд.

Int32 LaunchTimeout { get; set; }

BufferingPeriod: интервал в секундах, в течение которого события будут накапливаться на устройстве перед отправкой на сервер. По умолчанию 900 секунд. Можно установить значение в диапазоне 1-86400 секунд.

Int32 BufferingPeriod { get; set; }

ForcingPeriod: интервал в секундах после установки или обновления приложения, в течение которого события будут незамедлительно отправляться на сервер без локальной буферизации. По умолчанию 0 секунд (незамедлительная отправка выключена). Можно установить значение в диапазоне 0-432000 секунд (5 суток).

Int32 ForcingPeriod { get; set; }

IsTrackingLocationEnabled: отслеживание местоположения. По умолчанию true для iOS и false для Android платформ.

Если ваше Android приложение запрашивает доступ к местоположению устройства, то вы можете включить этот параметр, чтобы повысить точность статистики, связанной с географией пользователя. В некоторых случаях отслеживание местоположения также улучшает атрибуцию и работу предиктивных моделей (Fraud Scanner, Personalize, Прогнозы LTV и т.д.).

Для Android платформы параметр выключен по умолчанию начиная с версии SDK 3.0.2

Boolean IsTrackingLocationEnabled { get; set; }

Region: регион, где расположен сервер сбора статистики. Необходимость изменить регион может возникнуть, например, в связи с требованиями законодательства. Доступные значения:

  • RegionEnum.RU — сервер, расположенный на территории Российской Федерации

  • RegionEnum.EU — сервер, расположенный на территории Европы

public RegionEnum Region { set; }

Включение/выключение режима отладки

Включение/выключение режима отладки производится через статические свойства класса MyTracker. По умолчанию false.

Boolean IsDebugMode { get; set; }

Трекинг пользователей

Для отслеживания статистики не только по устройствам, но и по пользователям, установите параметр customUserId. Это уникальный идентификатор пользователя в вашем проекте, который вы присваиваете ему в момент регистрации. Он должен оставаться неизменным, даже если пользователь авторизуется на другом устройстве. Установив этот параметр, вы сможете оценить размер и активность аудитории приложения, вне зависимости от того, на скольких устройствах пользователя установлено ваше приложение. А также не будете терять историю накопленных по пользователю данных, если он решит сменить устройство. Подробнее см. раздел Трекинг.

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

public void SetUserInfo()
{
    var myTrackerParams = MyTracker.MyTrackerParams;

    // Установите пользовательский идентификатор
    myTrackerParams.CustomUserId = "user_id";

}

Если до установки customUserId в приложении уже сформирована база зарегистрированных пользователей, то MyTracker не сможет получить данные о времени их регистрации и произвести точный расчёт Lifetime метрик. Для таких пользователей Lifetime статистика будет считаться на дату первого отслеженного события с customUserId.

Чтобы отключить трекинг пользователей передайте пустое значение в параметре customUserId.

Трекинг событий

События можно отправлять через статические методы класса MyTracker. Перед вызовом методов установите параметр customUserId, чтобы с каждым отслеженным событием передавать идентификатор пользователя.

Доступны следующие методы для трекинга различных типов событий:

Событие регистрации. Метод должен быть вызван сразу после того, как пользователь зарегистрируется в приложении. Идентификатор пользователя должен быть передан в параметре userId.

Идентификатор userId — обязательный параметр начиная с SDK версии 2.0.1

void TrackRegistrationEvent(String userId)

Событие авторизации. Метод должен быть вызван сразу после того, как пользователь успешно авторизуется в приложении. Идентификатор пользователя должен быть передан в параметре userId.

Идентификатор userId — обязательный параметр начиная с SDK версии 2.0.1

void TrackLoginEvent(String userId)

Событие отправки приглашения. Дополнительный параметр eventParams позволяет задать произвольные параметры ключ-значение для события. Максимальная длина ключа и значения — 255 символов.

void TrackInviteEvent(IDictionary<String, String> eventParams = null)

Событие достижения уровня. Параметр level — номер уровня. Дополнительный параметр eventParams позволяет задать произвольные параметры ключ-значение для события. Максимальная длина ключа и значения — 255 символов.

void TrackLevelEvent(Int32? level = null, IDictionary<String, String>eventParams = null)

Произвольное событие с заданным именем. Дополнительный параметр eventParams позволяет задать произвольные параметры ключ-значение для события. Максимальная длина имени, ключа и значения — 255 символов.

void TrackEvent(String name, IDictionary<String, String> eventParams = null)

Пример:

var IDictionary<String, String> eventCustomParams = new Dictionary<String, String>();
eventCustomParams["someParamKey1"] = "someParamValue1";
eventCustomParams["someParamKey2"] = "someParamValue2";
MyTracker.TrackEvent("eventName", eventCustomParams));

Принудительная отправка всех событий и сброс таймера отправки.

SDK для снижения нагрузки на канал и минимизации влияния на производительность приложения накапливает в буфер все события на устройстве перед отправкой на сервер и регулярно отправляет собранные данные сжатым пакетом. По умолчанию данные отправляются на сервер каждые 15 минут. Этот интервал можно настроить через параметр bufferingPeriod от 1 секунды до 1 суток. Если пользователь закрыл приложение, то отправка будет произведена при следующем запуске. Но некоторые события крайне важно получать в аналитику как можно раньше, особенно в первые сессии после установки приложения. В этом поможет метод flush().

void Flush()

Трекинг встроенных покупок

На платформе iOS все встроенные покупки в приложении отслеживаются автоматически. Для отслеживания inApp покупок на платформе Android при использовании Unity Purchase следует использовать метод TrackPurchaseEvent(...), вызовы которого игнорируются на платформе iOS.

void TrackPurchaseEvent(Product product, IDictionary<String, String> eventParams = null)
  • product — экземпляр класса Product
  • eventParams — не обязательный параметр позволяющий задать произвольные параметры ключ-значение для события. Максимальная длина ключа и значения — 255 символов

Если вы не используете Unity Purchase, то метод TrackPurchaseEvent(...) следует использовать иначе.

#if UNITY_ANDROID
void TrackPurchaseEvent(String skuDetails, String purchaseData, String dataSignature, IDictionary<String, String> eventParams = null)
#endif
  • skuDetails — ответ на запрос getSkuDetails() покупки к google API, согласно документации
  • purchaseData — объект JSON, который находится в ответе на запрос getBuyIntent(), в поле INAPP_PURCHASE_DATA, согласно документации
  • dataSignature — строка, которая находится в ответе на запрос getBuyIntent(), в поле INAPP_DATA_SIGNATURE
  • eventParams — не обязательный параметр позволяющий задать произвольные параметры ключ-значение для события. Максимальная длина ключа и значения – 255 символов.

S2S трекинг

Для передачи данных с вашего сервера на сервер MyTracker (например, неотслеживаемых данных, офлайн-событий и пр.), может понадобиться специальный идентификатор устройства — instanceId. Идентификатор представляет собой значение UUID v4, которое генерируется в момент первого запуска приложения и остаётся неизменным до удаления приложения (или данных приложения) с устройства.

Получить значение instanceId можно с помощью статического метода класса MyTracker.

public static String InstanceId { get; }

Важно как можно раньше начать собирать instanceId и отправлять на ваш сервер, если вы используете его для передачи данных к S2S API.

Вместо instanceId в запросах к API можно указывать любой другой идентификатор устройства: gaid, androidId, appSetId, idfa, iosVendorId, и/или идентификатор пользователя customUserID (в этом случае данные будут формировать статистику по пользователю). Подробнее

Диплинки позволяют передать в приложение дополнительные параметры, с помощью которых можно перенаправить пользователя на определённый экран в приложении. Подробнее см. раздел Диплинки.

Для поддержки отложенных диплинков установите в приложении слушатель с помощью метода MyTracker.SetAttributionListener. Слушатель будет вызван только один раз, при первом запуске приложения, в случае, если для текущей установки был найден отложенный диплинк. В качестве параметра делегат будет передан объект атрибуции MyTrackerAttribution, содержащий свойство Deeplink.

public class YourMonoBehaviour : MonoBehaviour
{
    public void Awake()
    {
#if !UNITY_IOS && !UNITY_ANDROID
        return;
#endif

        // При необходимости, настройте конфигурацию трекера
        var myTrackerConfig = MyTracker.MyTrackerConfig;
        // ...
        // Настройте параметры трекера
        // ...

        // Устанавите слушатель
        MyTracker.SetAttributionListener(attribution => Debug.Log("Attribution: " + attribution.Deeplink));

        // Инициализируйте трекер в зависимости от платформы
#if UNITY_IOS
        MyTracker.Init("SDK_KEY_IOS");
#elif UNITY_ANDROID
        MyTracker.Init("SDK_KEY_ANDROID");
#endif
    }
}