Войти

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

  • Для приложений Huawei AppGallery обязательно наличие в проекте библиотеки Huawei Media Services (модуль com.huawei.hms:ads-identifier), чтобы MyTracker мог получить OAID.

iOS

  • iOS 9.0.

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

  • Подключенная библиотека 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 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: регион, где расположен сервер сбора статистики.

С 1 марта 2023г. параметр region недействителен. Вне зависимости от выбранного значения данные будут отправляться на серверы, расположенные на территории Российской Федерации. Чтобы выбрать другой регион, обратитесь в службу поддержки

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

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

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

public RegionEnum Region { set; }

RegisterForSkAdAttribution: поддержка SKAdNetwork атрибуции. По умолчанию YES.

SKAdNetwork — это инструмент атрибуции от Apple, который позволяет связать установку приложения с рекламной кампанией, и при этом сохранить конфиденциальность пользователей.

По умолчанию при первом запуске приложения на устройствах iOS 14.5+, MyTracker SDK версии 2.1.2 и выше вызовет метод SKAdNetwork — RegisterForSkAdAttribution, чтобы передать в рекламную сеть информацию о связанной установке. Рекламная сеть в свою очередь может отправить данные в MyTracker. С версии iOS 15 копию данных можно отправить напрямую в MyTracker, без посредничества рекламных сетей.

Вы можете отключить параметр RegisterForSkAdAttribution и самостоятельно настроить вызов методов SKAdNetwork. Но без поддержки SKAdNetwork вам не удастся отследить атрибуцию по устройствам, пользователи которых не давали разрешения на трекинг.

Подробнее см. раздел iOS и SKAdNetwork и документацию Apple

Boolean RegisterForSkAdAttribution { get; 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 сбор данных по in-app платежам и подпискам происходит автоматически. Для сбора данных о платежах на платформе 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
    }
}
Была ли эта статья полезна?