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

При миграции приложения с YandexMobileMetrica на AppMetrica будут сохранены основные идентификаторы и данные, то есть процесс перехода на новую версию не должен вызвать проблем и аномалий в отчетах.

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

  1. Замените зависимости. Необходимые изменения указаны в разделе по переименованию зависимостей.
  2. Убедитесь, что вы не используете 2 версии AppMetrica SDK одновременно.
  3. Импортируйте зависимости в коде. Необходимые изменения указаны в разделе про импортирование зависимостей.
  4. В коде проекта замените те классы и методы, которые были просто переименованы. Необходимые изменения указаны в разделе по переименованию API.
  5. Перейдите на новый API для отправки ошибок, используя инструкцию.
  6. Код с остальными ошибками временно закомментируйте, чтобы проект можно было собрать.
  7. Исправьте закомментированный код, используя остальные пункты данной инструкции. При возникновении вопросов напишите в поддержку.

Переименованные зависимости

pod 'YandexMobileMetrica', '~> 4.0'

Замените на:

pod 'AppMetricaAnalytics', '~> 5.0.0'

AppMetrica SDK состоит из нескольких модулей. Это позволяет подключать только необходимый функционал. При подключении AppMetricaAnalytics подключаются все модули. Для более детальной настройки обратитесь к разделу по интеграции.

Если зависимости установлены через Xcode

  1. Удалите зависимость metrika-sdk-ios.

  2. В окне Xcode навигатора проектов (Project Navigator) выберите свой проект (если у вас используется Workspace). Затем в верхнем меню нажмите File и выберите Add Package Dependencies....

  3. Укажите URL репозитория https://github.com/appmetrica/appmetrica-sdk-ios.

  4. Оставьте только нужные модули (чтобы выключить модуль, в Add to Target выберите значение None):

    • AppMetricaCore — обязательный основной модуль SDK. Должен быть подключен для работы с AppMetrica.
    • AppMetricaAdSupport — модуль используется для сбора идентификаторов, включая IDFA.
    • AppMetricaCrashes — модуль предназначен для отлова крэшей и отправки ошибок.
    • AppMetricaWebKit — модуль позволяет осуществлять отправку событий из JavaScript кода в WebView.

Если используется Package.swift манифест

  1. Удалите из файла Package.swift в вашем проекте зависимость .package с YandexMobileMetrica, а также все указания на зависимости в разделе targets: внутри вашего проекта.

  2. Вставьте следующий код для добавления новой зависимости от appmetrica-sdk-ios:

    dependencies: [
      .package(
        name: "AppMetrica",
        url: "https://github.com/appmetrica/appmetrica-sdk-ios",
        .upToNextMinor(from: "5.0.0")
      ),
    ],
    
  3. Добавьте необходимые модули к таргетам вашего проекта.

    • AppMetricaCore — обязательный основной модуль SDK. Должен быть подключен для работы с AppMetrica.
    • AppMetricaAdSupport — модуль используется для сбора идентификаторов, включая IDFA.
    • AppMetricaCrashes — модуль предназначен для отлова крэшей и отправки ошибок.
    • AppMetricaWebKit — модуль позволяет осуществлять отправку событий из JavaScript кода в WebView.
    .target(
        name: "MyTargetName",
        dependencies: [
          .product(name: "AppMetricaCore", package: "AppMetrica"),
          .product(name: "AppMetricaCrashes", package: "AppMetrica"),
          .product(name: "AppMetricaWebKit", package: "AppMetrica"),
          // .product(name: "AppMetricaAdSupport", package: "AppMetrica"), // Этот модуль отлючен
        ]
    ),
    

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

Переименованы группа и названия основных артефактов, поэтому в одном приложении могут использоваться сразу две версии AppMetrica SDK: AppMetrica версий 4 и ниже (YandexMobileMetrica) и версий 5 и выше (AppMetrica). Такая ситуация нежелательна и может возникнуть только в определенных условиях.

1. Среди зависимостей приложения прописаны зависимости сразу от двух разных версий AppMetrica SDK

Внимание

Категорически не рекомендуется одновременная работа в коде приложения с YandexMobileMetrica и AppMetrica с одним API key. То есть нельзя одновременно активировать YandexMetrica и AppMetrica с одним API key. Это не приведет к сбоям и крэшам в приложении, но вызовет искажение и нарушение статистики. При миграции на AppMetrica проверьте, что среди зависимостей приложения нет зависимости от YandexMobileMetrica.

2. Одна из зависимостей приложения транзитивно зависит от AppMetrica SDK

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

Как убедиться, что не используется YandexMobileMetrica

Откройте файл Podfile.lock и выполните поиск YandexMobileMetrica.

Так же по блоку PODS в файле Podfile.lock можно понять какая зависимость ссылается на YandexMobileMetrica.

PODS:
  ...
   YandexMobileAds (6.4.0):
    - DivKit (= 28.13.0)
    - YandexMobileMetrica (< 5.0.0, >= 4.0.0)
  ...

Если зависимости установлены через Xcode

Откройте проект в Xcode. Убедитесь, что в Package Dependencies нет YandexMobileMetrica.

Если используется Package.swift манифест

Если ваш проект использует Package.swift манифест для управления зависимостями, выполните в терминале команду swift package show-dependencies в директории вашего проекта. Это выведет список всех зависимостей проекта, включая транзитивные.

.
└── yandex-ads-sdk-ios<https://github.com/yandexmobile/yandex-ads-sdk-ios.git@6.4.0>
  ├── metrica-sdk-ios<https://github.com/yandexmobile/metrica-sdk-ios@4.5.2>
  └── divkit-ios<https://github.com/divkit/divkit-ios@28.13.0>
      └── vgsl<https://github.com/yandex/vgsl.git@2.4.1>

Также можно проверить файл Package.resolved на наличие зависимости YandexMobileMetrica.

{
  "object": {
    "pins": [
      //...
      {
        "package": "YandexMobileMetrica",
        "repositoryURL": "https://github.com/yandexmobile/metrica-sdk-ios",
        "state": {
          "branch": null,
          "revision": "13d8b11181a33938ef42759d49466a621df5e7db",
          "version": "4.5.2"
        }
      },
      //...
    ]
  },
  // ...
}

Импортирование зависимостей

import YandexMobileMetrica

Замените на:

import AppMetricaCore
import AppMetricaCrashes // при необходимости работы с ошибками/крэшами
import AppMetricaWebKit // при необходимости настроить отправку событий из WebView
#import <YandexMobileMetrica/YandexMobileMetrica.h>

Замените на:

#import <AppMetricaCore/AppMetricaCore.h>
#import <AppMetricaCrashes/AppMetricaCrashes.h> // при необходимости работы с ошибками/крэшами
#import <AppMetricaWebKit/AppMetricaWebKit.h> // при необходимости настроить отправку событий из WebView

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

Префикс YMM удален.

  • Интерфейс YMMYandexMetrica переименован в AppMetrica.
    • Метод handleOpen(_:) переименован в trackOpeningURL(_:).
    • Метод initWebViewReporting(_:onFailure:) переименован в setupWebViewReporting(with:onFailure:), смотрите подробнее в Отправка события из JavaScript-кода WebView.
    • Метод libraryVersion() удален, используйте свойство libraryVersion.
    • Метод report(adRevenue:onFailure:) переименован в reportAdRevenue(_:onFailure).
    • Метод report(eCommerce:onFailure:) переименован в reportECommerce(_:onFailure:).
    • Метод report(error:onFailure:) перенесен в класс AppMetricaCrashes и в модуль AppMetricaCrashes, смотрите инструкцию Работа с крэшами и ошибками.
    • Метод report(error:options:onFailure:) перенесен в класс AppMetricaCrashes и в модуль AppMetricaCrashes, смотрите инструкцию Работа с крэшами и ошибками.
    • Метод report(nserror:onFailure:) перенесен в класс AppMetricaCrashes и в модуль AppMetricaCrashes, смотрите инструкцию Работа с крэшами и ошибками.
    • Метод report(nserror:options:onFailure:) перенесен в класс AppMetricaCrashes и в модуль AppMetricaCrashes, смотрите инструкцию Работа с крэшами и ошибками.
    • Метод reportError(_:exception:onFailure:) удален, смотрите инструкцию Работа с крэшами и ошибками.
    • Метод reportEvent(_:onFailure:) переименован в reportEvent(name:onFailure).
    • Метод reportEvent(_:parameters:onFailure:) переименован в reportEvent(name:parameters:onFailure).
    • Метод reportReferralUrl(_:) удален.
    • Метод reporterForApiKey(_:) переименован в reporter(for:).
    • Метод requestAppMetricaDeviceID(withCompletionQueue:completionBlock:) удален, используйте requestStartupIdentifiers(for:on:completion:).
    • Метод setErrorEnvironmentValue(_:forKey:) удален, используйте AppMetricaCrashes.crashes().set(errorEnvironmentValue: value, forKey: key).
    • Метод setLocation(_:) удален, используйте свойство customLocation.
    • Метод setLocationTracking(_:) удален, используйте свойство isLocationTrackingEnabled.
    • Метод setStatisticsSending(_:) переименован в setDataSendingEnabled(_:).
    • Метод setUserProfileID(_:) удален, используйте свойство userProfileID.
  • Интерфейс YMMYandexMetricaConfiguration переименован в AppMetricaConfiguration
  • Интерфейс YMMYandexMetricaPreloadInfo переименован в AppMetricaPreloadInfo.
    • Метод setAdditional(_:forKey:) переименован в setAdditional(info:forKey:).

Reporter

  • Интерфейс YMMMutableReporterConfiguration переименован в MutableReporterConfiguration.
    • Свойство logs переименовано в areLogsEnabled.
    • Свойство statisticsSending переименовано в dataSendingEnabled.
  • Интерфейс YMMReporterConfiguration переименован в ReporterConfiguration.
    • Свойство logs переименовано в areLogsEnabled.
    • Свойство statisticsSending переименовано в dataSendingEnabled.
  • Протокол YMMYandexMetricaReporting переименован в AppMetricaReporting.
    • Метод report(adRevenue:onFailure:) переименован в reportAdRevenue(_:onFailure).
    • Метод report(eCommerce:onFailure:) переименован в reportECommerce(_:onFailure:).
    • Метод report(error:onFailure:) перенесен в класс AppMetricaCrashes и в модуль AppMetricaCrashes, смотрите инструкцию Работа с крэшами и ошибками.
    • Метод report(error:options:onFailure:) перенесен в класс AppMetricaCrashes и в модуль AppMetricaCrashes, смотрите инструкцию Работа с крэшами и ошибками.
    • Метод report(nserror:onFailure:) перенесен в класс AppMetricaCrashes и в модуль AppMetricaCrashes, смотрите инструкцию Работа с крэшами и ошибками.
    • Метод report(nserror:options:onFailure:) перенесен в класс AppMetricaCrashes и в модуль AppMetricaCrashes, смотрите инструкцию Работа с крэшами и ошибками.
    • Метод reportEvent(_:onFailure:) переименован в reportEvent(name:onFailure).
    • Метод reportEvent(_:parameters:onFailure:) переименован в reportEvent(name:parameters:onFailure).
    • Метод setStatisticsSending(_:) переименован в setDataSendingEnabled(_:).
    • Метод setUserProfileID(_:) удален, используйте свойство userProfileID.

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

  • Интерфейс YMMMutableUserProfile переименован в MutableUserProfile.
  • Интерфейс YMMProfileAttribute переименован в ProfileAttribute.
  • Интерфейс YMMUserProfile переименован в UserProfile.
  • Перечисление YMMGenderType переименовано в GenderType.
  • Протокол YMMBirthDateAttribute переименован в BirthDateAttribute.
  • Протокол YMMCustomBoolAttribute переименован в CustomBoolAttribute.
  • Протокол YMMCustomCounterAttribute переименован в CustomCounterAttribute.
  • Протокол YMMCustomNumberAttribute переименован в CustomNumberAttribute.
  • Протокол YMMCustomStringAttribute переименован в CustomStringAttribute.
  • Протокол YMMGenderAttribute переименован в GenderAttribute.
  • Протокол YMMNameAttribute переименован в NameAttribute.
  • Протокол YMMNotificationsEnabledAttribute переименован в NotificationsEnabledAttribute.

Ошибки

  • Интерфейс YMMError переименован в AppMetricaError и перенесен в модуль AppMetricaCrashes.
  • Константа YMMBacktraceErrorKey переименована в BacktraceErrorKey и перенесена в модуль AppMetricaCrashes.
  • Перечисление YMMErrorReportingOptions переименовано в ErrorReportingOptions и перенесено в модуль AppMetricaCrashes.
  • Протокол YMMErrorRepresentable переименован в ErrorRepresentable и перенесен в модуль AppMetricaCrashes.

AdRevenue

  • Интерфейс YMMAdRevenueInfo переименован в AdRevenueInfo.
  • Интерфейс YMMMutableAdRevenueInfo переименован в MutableAdRevenueInfo.
  • Перечисление YMMAdType переименовано в AdType.

ECommerce

  • Интерфейс YMMECommerceAmount переименован в ECommerceAmount.
  • Интерфейс YMMECommerceCartItem переименован в ECommerceCartItem.
  • Интерфейс YMMECommerceOrder переименован в ECommerceOrder.
  • Интерфейс YMMECommercePrice переименован в ECommercePrice.
  • Интерфейс YMMECommerceProduct переименован в ECommerceProduct.
  • Интерфейс YMMECommerceReferrer переименован в ECommerceReferrer.
  • Интерфейс YMMECommerceScreen переименован в ECommerceScreen.
  • Интерфейс YMMECommerce переименован в ECommerce.

Revenue

  • Интерфейс YMMMutableRevenueInfo переименован в MutableRevenueInfo.
  • Интерфейс YMMRevenueInfo переименован в RevenueInfo.
    • Конструктор init(price:currency:) удален, используйте init(priceDecimal:currency).
    • Конструктор init(price:currency:quantity:productID:transactionID:receiptData:payload:) удален, используйте init(priceDecimal:currency:quantity:productID:transactionID:receiptData:payload:).

Префикс YMM сменился на AMA.

  • Интерфейс YMMYandexMetrica переименован в AMAAppMetrica.
    • Метод +handleOpenURL: переименован в +trackOpeningURL:.
    • Метод +initWebViewReporting:onFailure: переименован в +setupWebViewReporting:onFailure:, смотрите подробнее в Отправка события из JavaScript-кода WebView.
    • Метод +libraryVersion: удален, используйте свойство libraryVersion.
    • Метод +reportError:exception:onFailure: удален, смотрите инструкцию Работа с крэшами и ошибками
    • Метод +reportError:onFailure: перенесен в класс AppMetricaCrashes и в модуль AppMetricaCrashes, смотрите инструкцию Работа с крэшами и ошибками.
    • Метод +reportError:options:onFailure: перенесен в класс AppMetricaCrashes и в модуль AppMetricaCrashes, смотрите инструкцию Работа с крэшами и ошибками.
    • Метод +reportEvent:params:onFailure: переименован в +reportEvent:parameters:onFailure:
    • Метод +reportNSError:onFailure: перенесен в класс AppMetricaCrashes и в модуль AppMetricaCrashes, смотрите инструкцию Работа с крэшами и ошибками.
    • Метод +reportNSError:options:onFailure: перенесен в класс AppMetricaCrashes и в модуль AppMetricaCrashes, смотрите инструкцию Работа с крэшами и ошибками.
    • Метод +reportReferralUrl: удален.
    • Метод +reporterForApiKey: переименован в +reporterForAPIKey:.
    • Метод +requestAppMetricaDeviceIDWithCompletionQueue: удален, используйте +requestStartupIdentifiersWithKeys:completionQueue:completionBlock:.
    • Метод +setErrorEnvironmentValue:forKey: удален, используйте [[AMAAppMetricaCrashes crashes] setErrorEnvironmentValue:value forKey:key].
    • Метод +setLocation: удален, используйте свойство customLocation.
    • Метод +setLocationTracking: удален, используйте свойство locationTrackingEnabled.
    • Метод +setStatisticsSending: переименован в +setDataSendingEnabled:.
    • Метод +setUserProfileID: удален, используйте свойство userProfileID.
  • Интерфейс YMMYandexMetricaConfiguration переименован в AMAAppMetricaConfiguration.
    • Конструктор -initWithApiKey: переименован в -initWithAPIKey:.
    • Свойство apiKey переименован в APIKey.
    • Свойство appForKids удалено, смотрите инструкцию Использование SDK для детских приложений.
    • Свойство crashReporting удалено, смотрите инструкцию Работа с крэшами и ошибками.
    • Свойство location переименовано в customLocation.
    • Свойство logs переименовано в logsEnabled.
    • Свойство statisticsSending переименовано в dataSendingEnabled.
  • Интерфейс YMMYandexMetricaPreloadInfo переименован в AMAAppMetricaPreloadInfo.

Reporter

  • Интерфейс YMMMutableReporterConfiguration переименован в AMAMutableReporterConfiguration.
    • Свойство logs переименовано в logsEnabled.
    • Свойство statisticsSending переименовано в dataSendingEnabled.
  • Интерфейс YMMReporterConfiguration переименован в AMAReporterConfiguration.
    • Конструктор -initWithApiKey: переименован в -initWithAPIKey:.
    • Свойство apiKey переименовано в APIKey.
    • Свойство logs переименовано в logsEnabled.
    • Свойство statisticsSending переименовано в dataSendingEnabled.
  • Протокол YMMYandexMetricaReporting переименован в AMAAppMetricaReporting.
    • Метод +reportError:onFailure: перенесен в класс AppMetricaCrashes и в модуль AppMetricaCrashes, смотрите инструкцию Работа с крэшами и ошибками.
    • Метод +reportError:options:onFailure: перенесен в класс AppMetricaCrashes и в модуль AppMetricaCrashes, смотрите инструкцию Работа с крэшами и ошибками.
    • Метод +reportEvent:params:onFailure: переименован в +reportEvent:parameters:onFailure:.
    • Метод +reportNSError:onFailure: перенесен в класс AppMetricaCrashes и в модуль AppMetricaCrashes, смотрите инструкцию Работа с крэшами и ошибками.
    • Метод +reportNSError:options:onFailure: перенесен в класс AppMetricaCrashes и в модуль AppMetricaCrashes, смотрите инструкцию Работа с крэшами и ошибками.
    • Метод +setStatisticsSending: переименован в +setDataSendingEnabled:.

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

  • Интерфейс YMMMutableUserProfile переименован в AMAMutableUserProfile.
  • Интерфейс YMMProfileAttribute переименован в AMAProfileAttribute.
  • Интерфейс YMMUserProfile переименован в AMAUserProfile.
  • Перечисление YMMGenderType переименовано в AMAGenderType.
  • Протокол YMMBirthDateAttribute переименован в AMABirthDateAttribute.
  • Протокол YMMCustomBoolAttribute переименован в AMACustomBoolAttribute.
  • Протокол YMMCustomCounterAttribute переименован в AMACustomCounterAttribute.
  • Протокол YMMCustomNumberAttribute переименован в AMACustomNumberAttribute.
  • Протокол YMMCustomStringAttribute переименован в AMACustomStringAttribute.
  • Протокол YMMGenderAttribute переименован в AMAGenderAttribute.
  • Протокол YMMNameAttribute переименован в AMANameAttribute.
  • Протокол YMMNotificationsEnabledAttribute переименован в AMANotificationsEnabledAttribute.

Ошибки

  • Интерфейс YMMError переименован в AMAError.
  • Константа YMMBacktraceErrorKey переименована в AMABacktraceErrorKey.
  • Перечисление YMMErrorReportingOptions переименовано в AMAErrorReportingOptions.
  • Протокол YMMErrorRepresentable переименован в AMAErrorRepresentable.

AdRevenue

  • Интерфейс YMMAdRevenueInfo переименован в AMAAdRevenueInfo.
  • Интерфейс YMMMutableAdRevenueInfo переименован в AMAMutableAdRevenueInfo.
  • Перечисление YMMAdType переименовано в AMAAdType.

ECommerce

  • Интерфейс YMMECommerceAmount переименован в AMAECommerceAmount.
  • Интерфейс YMMECommerceCartItem переименован в AMAECommerceCartItem.
  • Интерфейс YMMECommerceOrder переименован в AMAECommerceOrder.
  • Интерфейс YMMECommercePrice переименован в AMAECommercePrice.
  • Интерфейс YMMECommerceProduct переименован в AMAECommerceProduct.
  • Интерфейс YMMECommerceReferrer переименован в AMAECommerceReferrer.
  • Интерфейс YMMECommerceScreen переименован в AMAECommerceScreen.
  • Интерфейс YMMECommerce переименован в AMAECommerce.

Revenue

  • Интерфейс YMMMutableRevenueInfo переименован в AMAMutableRevenueInfo.
  • Интерфейс YMMRevenueInfo переименован в AMARevenueInfo.
    • Конструктор -initWithPrice:currency: удален, используйте -initWithPriceDecimal:currency:.
    • Конструктор -initWithPrice:currency:quantity:productID:transactionID:receiptData:payload: удален, используйте -initWithPriceDecimal:currency:quantity:productID:transactionID:receiptData:payload:.

Работа с крэшами и ошибками

API для работы с ошибками теперь находится в модуле AppMetricaCrashes. Если вы подключаете AppMetricaAnalytics, отдельное подключение AppMetricaCrashes не требуется, так как модуль входит в состав AppMetricaAnalytics.

Во все файлы, где используется API крэшей или ошибок, добавьте импорт:

import AppMetricaCrashes

Настройка стратегии отправки крэшей задается с помощью класса AppMetricaCrashesConfiguration:

var configuration = AppMetricaCrashesConfiguration()
configuration.autoCrashTracking = true // Если этот параметр включен, крэши будут автоматически отправляться в AppMetrca
configuration.probablyUnhandledCrashReporting = true // Используйте этот параметр для включения или отключения отслеживания неявных сбоев, например, OOM крэшей
configuration.ignoredCrashSignals = [] // Эта настройка позволяет указать массив номеров UNIX-сигналов из sys/signal.h, которые будут проигнорированы системой отслеживания сбоев
configuration.applicationNotRespondingDetection = true // Эта настройка включает обнаружение ситуации, когда основной поток приложения перестает отвечать (ANR)
configuration.applicationNotRespondingWatchdogInterval = 4.0 // Устанавливает интервал времени, который будет ожидать watchdog, прежде чем сообщить о состоянии "Приложение не отвечает" (ANR)
configuration.applicationNotRespondingPingInterval = 0.1 // Устанавливает частоту, с которой watchdog будет проверять состояние "Приложение не отвечает" (ANR)
AppMetricaCrashes.crashes().setConfiguration(configuration)

Для отправки ошибок воспользуйтесь методами из класса AppMetricaCrashes. Их сигнатура совпадает с сигнатурами аналогичных методов из YMMYandexMetrica. Поэтому достаточно заменить YMMYandexMetrica на AppMetricaCrashes.crashes().

AppMetricaCrashes.crashes().report(error:error)
AppMetricaCrashes.crashes().report(error:error, onFailure:nil)
AppMetricaCrashes.crashes().report(error:error, options:options, onFailure:nil)
AppMetricaCrashes.crashes().report(nserror:error)
AppMetricaCrashes.crashes().report(nserror:error, onFailure:nil)
AppMetricaCrashes.crashes().report(nserror:error, options:options, onFailure:nil)

Во все файлы, где используется API крэшей или ошибок, добавьте импорт:

#import <AppMetricaCrashes/AppMetricaCrashes.h>

Настройка стратегии отправки крэшей задается с помощью класса AMAAppMetricaCrashesConfiguration:

AMAAppMetricaCrashesConfiguration *configuration = [[AMAAppMetricaCrashesConfiguration alloc] init];
configuration.autoCrashTracking = YES; // Если этот параметр включен, крэши будут автоматически отправляться в AppMetrca
configuration.probablyUnhandledCrashReporting = YES; // Используйте этот параметр для включения или отключения отслеживания неявных сбоев, например, OOM крэшей
configuration.ignoredCrashSignals = @[]; // Эта настройка позволяет указать массив номеров UNIX-сигналов из sys/signal.h, которые будут проигнорированы системой отслеживания сбоев
configuration.applicationNotRespondingDetection = YES; // Эта настройка включает обнаружение ситуации, когда основной поток приложения перестает отвечать (ANR)
configuration.applicationNotRespondingWatchdogInterval = 4.0; // Устанавливает интервал времени, который будет ожидать watchdog, прежде чем сообщить о состоянии "Приложение не отвечает" (ANR)
configuration.applicationNotRespondingPingInterval = 0.1; // Устанавливает частоту, с которой watchdog будет проверять состояние "Приложение не отвечает" (ANR)
[[AMAAppMetricaCrashes crashes] setConfiguration:configuration];

Для отправки ошибок воспользуйтесь методами из класса AppMetricaCrashes. Их сигнатура совпадает с сигнатурами аналогичных методов из YMMYandexMetrica. Поэтому достаточно заменить YMMYandexMetrica на [AMAAppMetricaCrashes crashes].

[[AMAAppMetricaCrashes crashes] reportError:error onFailure:nil];
[[AMAAppMetricaCrashes crashes] reportError:error options:options onFailure:nil];
[[AMAAppMetricaCrashes crashes] reportNSError:error onFailure:nil];
[[AMAAppMetricaCrashes crashes] reportNSError:error options:options onFailure:nil];

Более подробно про отправку ошибок смотрите в примерах использования.

Отправка события из JavaScript-кода WebView

API для настройки отправки событий из JavaScript-кода WebView теперь находится в модуле AppMetricaWebKit. Если вы подключаете AppMetricaAnalytics, отдельное подключение AppMetricaWebKit не требуется, так как модуль входит в состав AppMetricaAnalytics.

В каждом файле, где используется настройка WebView в рамках библиотеки AppMetrica, добавьте следующую строку:

import AppMetricaWebKit

Необходимо заменить экземпляр WKUserContentController на экземпляр обертки JSController. Замените:

let userController = WKUserContentController()
YMMYandexMetrica.initWebViewReporting(userController, onFailure: nil)

на

let userController = WKUserContentController()
AppMetrica.setupWebViewReporting(with: JSController(userContentController: userController), onFailure: nil)

В каждом файле, где используется настройка WebView, добавьте следующую строку:

#import <AppMetricaWebKit/AppMetricaWebKit.h>

Необходимо заменить экземпляр WKUserContentController на экземпляр обертки AMAJSController. Замените:

WKUserContentController *userController = [[WKUserContentController alloc] init];
[YMMYandexMetrica initWebViewReporting:userController onFailure:nil];

на

WKUserContentController *userController = [[WKUserContentController alloc] init];
[AMAAppMetrica setupWebViewReporting:[[AMAJSController alloc] initWithUserContentController:userController] onFailure:nil];

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

Использование SDK для детских приложений

Чтобы SDK можно было использовать в приложении, ориентированном на детскую аудиторию, исключите модуль AppMetricaAdSupport.

Вместо

pod 'AppMetricaAnalytics', '~> 5.0.0'

используйте

pod 'AppMetricaCore', '~> 5.0.0'
pod 'AppMetricaCrashes', '~> 5.0.0' # если вам нужны крэши и ошибки
pod 'AppMetricaWebKit', '~> 5.0.0' # если вам нужно отправлять события из WebView

Если зависимости установлены через Xcode

Исключите AppMetricaAdSupport из Frameworks, Libraries, and Embedded Content для вашего таргета.

Если используется Package.swift манифест

Отключите модуль AppMetricaAdSupport:

 .target(
    name: "MyTargetName",
    dependencies: [
       .product(name: "AppMetricaCore", package: "AppMetrica"),
       .product(name: "AppMetricaCrashes", package: "AppMetrica"),
       .product(name: "AppMetricaWebKit", package: "AppMetrica"),
       // .product(name: "AppMetricaAdSupport", package: "AppMetrica"), // Этот модуль отлючен
    ]
 ),

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

Написать в службу поддержки