Руководство по миграции на версию 6.0.0

Одновременное использование двух версий AppMetrica SDK

В одном приложении могут использоваться сразу две версии AppMetrica SDK. Такая ситуация нежелательна. Статистика должна собираться нормально, хотя допустимы небольшие отклонения. В этом случае возможно некоторое увеличение размера приложения, так как в составе приложения будут присутствовать два SDK, вместо одного.

Внимание

Категорически не рекомендуется одновременная работа в коде приложения двух версий SDK с одним API_KEY. То есть нельзя одновременно активировать AppMetrica и использовать префаб с одним API_KEY. Это не приведет к сбоям и крэшам в приложении, но вызовет искажение и нарушение статистики. При миграции на новую версию плагина проверьте, что у вас нет папки Assets/AppMetrica, новая версия плагина поставляется через UPM и будет располагаться в Library/PackageCache/io.appmetrica.analytics@hash.

Руководство по миграции

Руководство содержит примеры, демонстрирующие различия между версиями плагина 5.2.0 и 6.0.0. В разделе рассматриваются только те методы, в которых нарушена обратная совместимость.

Для миграции на новую версию выполните следующие шаги:

  1. Удалите старую версию плагина.
  2. Добавьте новую версию плагина используя UPM. Подробнее смотрите в разделе про подключение плагина.
  3. Замените префаб на активацию через RuntimeInitializeOnLoadMethodAttribute. Подробнее смотрите в разделе про замену префаба.
  4. В коде проекта замените те классы и методы, которые были переименованы или поменяли только пакет. Подробнее смотрите в разделе про переименования.

Подключение AppMetrica Unity Plugin 6.0.0

Для подключения плагина используется Unity Package Manager.

Добавьте зависимости в Packages/manifest.json:

{
  "scopedRegistries": [
    {
      "name": "package.openupm.com",
      "url": "https://package.openupm.com",
      "scopes": [
        "com.google.external-dependency-manager",
        "io.appmetrica.analytics"
      ]
    }
  ],
  "dependencies": {
    "com.google.external-dependency-manager": "1.2.183",
    "io.appmetrica.analytics": "6.3.0"      
  }
}
  1. Подключите External Dependency Manager согласно документации.

  2. Добавьте AppMetrica Unity Plugin в зависимости в Packages/manifest.json:

{
  "dependencies": {
    "io.appmetrica.analytics": "https://github.com/appmetrica/appmetrica-unity-plugin.git#v6.3.0"
  }
}

Замена префаба

  1. Создайте static метод с атрибутом [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)] и произведите активацию AppMetrica с помощью метода AppMetrica.Activate().

Пример:

using Io.AppMetrica;
using UnityEngine;

public static class AppMetricaActivator {
    [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
    private static void Activate() {
        AppMetrica.Activate(new AppMetricaConfig("APIKey") {
            // copy settings from prefab
            CrashReporting = true, // prefab field 'Exceptions Reporting'
            SessionTimeout = 10, // prefab field 'Session Timeout Sec'
            LocationTracking = false, // prefab field 'Location Tracking'
            Logs = false, // prefab field 'Logs'
            FirstActivationAsUpdate = !IsFirstLaunch(), // prefab field 'Handle First Activation As Update'
            DataSendingEnabled = true, // prefab field 'Statistics Sending'
        });
    }
    
    private static bool IsFirstLaunch() {
        // Implement logic to detect whether the app is opening for the first time.
        // For example, you can check for files (settings, databases, and so on),
        // which the app creates on its first launch.
        return true;
    }
}
  1. Удалите AppMetrica префаб с ваших сцен.

Переименование

Примечание

Для работы с AppMetrica используйте static методы из класса AppMetrica. Для этого замените AppMetrica.Instance на AppMetrica и добавьте импорт Io.AppMetrica.

  • Интерфейс IYandexAppMetrica удален, методы перенесены в класс AppMetrica.
    • Свойство LibraryVersion удалено, используйте метод GetLibraryVersion().
    • Свойство LibraryApiLevel удалено.
    • Метод ActivateWithConfiguration переименован в Activate.
    • Метод ReportEvent(string, IDictionary<string, object>) удален, используйте метод ReportEvent(string, string).
    • Метод ReportError(string, string) удален.
    • Метод ReportError(string, string, string) удален.
    • Метод ReportError(string, string, YandexAppMetricaErrorDetails) удален, используйте метод ReportError(string, string, Exception).
    • Метод ReportError(string, string, YandexAppMetricaErrorDetails) удалён, используйте метод ReportError(string, string, Exception).
    • Метод ReportError(Exception, string) удален, используйте метод ReportError(string, Exception).
    • Метод ReportError(YandexAppMetricaErrorDetails, string) удалён, используйте метод ReportError(string, Exception).
    • Метод ReportUnhandledException(YandexAppMetricaErrorDetails) удален, используйте метод ReportUnhandledException(Exception).
    • Метод ReportErrorFromLogCallback удален.
    • Метод SetStatisticsSending переименован в SetDataSendingEnabled.
    • Метод RequestAppMetricaDeviceID удален, используйте метод RequestStartupParams.
    • Метод ReportReferralUrl удален.
    • Метод RequestTrackingAuthorization удален.
  • Класс YandexAppMetricaConfig переименован в AppMetricaConfig и перенесен в пространство имен Io.AppMetrica.
    • Свойство StatisticsSending переименовано в DataSendingEnabled.
    • Свойство HandleFirstActivationAsUpdate переименовано в FirstActivationAsUpdate.
    • Свойство AppForKids удалено.
  • Класс YandexAppMetricaConfig.Coordinates переименован в Location и перенесен в пространство имен Io.AppMetrica.
  • Класс YandexAppMetricaPreloadInfo переименован в PreloadInfo и перенесен в пространство имен Io.AppMetrica.
  • Перечисление YandexAppMetricaRequestDeviceIDError удалено.
  • Перечисление YandexAppMetricaRequestTrackingStatus удалено.

AdRevenue

  • Класс YandexAppMetricaAdRevenue переименован в AdRevenue и перенесен в пространство имен Io.AppMetrica.
    • Свойство AdRevenue переименовано в AdRevenueValue.

Revenue

  • Класс YandexAppMetricaRevenue переименован в Revenue и перенесен в пространство имен Io.AppMetrica.
    • Конструктор (double, string) удален, используйте (long, string).
    • Свойство Price удалено, используйте PriceMicros.
    • Свойство Receipt переименовано в ReceiptValue.
  • Класс YandexAppMetricaReceipt переименован в Revenue.Receipt и перенесен в пространство имен Io.AppMetrica.

Атрибуты пользователя

  • Класс YandexAppMetricaAttribute переименован в Attribute и перенесен в пространство имен Io.AppMetrica.Profile.
  • Класс YandexAppMetricaBirthDateAttribute переименован в BirthDateAttribute и перенесен в пространство имен Io.AppMetrica.Profile.
  • Класс YandexAppMetricaBooleanAttribute переименован в BooleanAttribute и перенесен в пространство имен Io.AppMetrica.Profile.
  • Класс YandexAppMetricaCounterAttribute переименован в CounterAttribute и перенесен в пространство имен Io.AppMetrica.Profile.
  • Класс YandexAppMetricaGenderAttribute переименован в GenderAttribute и перенесен в пространство имен Io.AppMetrica.Profile.
  • Класс YandexAppMetricaGenderAttribute.Gender переименован в GenderAttribute.Gender и перенесен в пространство имен Io.AppMetrica.Profile.
    • Значение FEMALE переименовано в Female.
    • Значение MALE переименовано в Male.
    • Значение OTHER переименовано в Other.
  • Класс YandexAppMetricaNameAttribute переименован в NameAttribute и перенесен в пространство имен Io.AppMetrica.Profile.
  • Класс YandexAppMetricaNotificationsEnabledAttribute переименован в NotificationsEnabledAttribute и перенесен в пространство имен Io.AppMetrica.Profile.
  • Класс YandexAppMetricaNumberAttribute переименован в NumberAttribute и перенесен в пространство имен Io.AppMetrica.Profile.
  • Класс YandexAppMetricaStringAttribute переименован в StringAttribute и перенесен в пространство имен Io.AppMetrica.Profile.
  • Класс YandexAppMetricaUserProfile переименован в UserProfile и перенесен в пространство имен Io.AppMetrica.Profile.
    • Метод ApplyFromArray(List<YandexAppMetricaUserProfileUpdate>) удален.
  • Класс YandexAppMetricaUserProfileUpdate переименован в UserProfileUpdate и перенесен в пространство имен Io.AppMetrica.Profile.