Руководство по миграции на версию 5.0.0
При миграции приложения с YandexMobileMetrica
на AppMetrica
будут сохранены основные идентификаторы и данные, то есть процесс перехода на новую версию не должен вызвать проблем и аномалий в отчетах.
Для миграции на новую версию выполните следующие шаги:
- Замените зависимости. Необходимые изменения указаны в разделе по переименованию зависимостей.
- Убедитесь, что вы не используете 2 версии AppMetrica SDK одновременно.
- Импортируйте зависимости в коде. Необходимые изменения указаны в разделе про импортирование зависимостей.
- В коде проекта замените те классы и методы, которые были просто переименованы. Необходимые изменения указаны в разделе по переименованию API.
- Перейдите на новый API для отправки ошибок, используя инструкцию.
- Код с остальными ошибками временно закомментируйте, чтобы проект можно было собрать.
- Исправьте закомментированный код, используя остальные пункты данной инструкции. При возникновении вопросов напишите в поддержку.
Переименованные зависимости
pod 'YandexMobileMetrica', '~> 4.0'
Замените на:
pod 'AppMetricaAnalytics', '~> 5.0.0'
AppMetrica SDK состоит из нескольких модулей. Это позволяет подключать только необходимый функционал. При подключении AppMetricaAnalytics
подключаются все модули. Для более детальной настройки обратитесь к разделу по интеграции.
Если зависимости установлены через Xcode
-
Удалите зависимость
metrika-sdk-ios
. -
В окне Xcode навигатора проектов (Project Navigator) выберите свой проект (если у вас используется Workspace). Затем в верхнем меню нажмите File и выберите Add Package Dependencies....
-
Укажите URL репозитория
https://github.com/appmetrica/appmetrica-sdk-ios
. -
Оставьте только нужные модули (чтобы выключить модуль, в
Add to Target
выберите значениеNone
):AppMetricaCore
— обязательный основной модуль SDK. Должен быть подключен для работы с AppMetrica.AppMetricaAdSupport
— модуль используется для сбора идентификаторов, включая IDFA.AppMetricaCrashes
— модуль предназначен для отлова крэшей и отправки ошибок.AppMetricaWebKit
— модуль позволяет осуществлять отправку событий из JavaScript кода в WebView.
Если используется Package.swift манифест
-
Удалите из файла
Package.swift
в вашем проекте зависимость.package
сYandexMobileMetrica
, а также все указания на зависимости в разделеtargets:
внутри вашего проекта. -
Вставьте следующий код для добавления новой зависимости от
appmetrica-sdk-ios
:dependencies: [ .package( name: "AppMetrica", url: "https://github.com/appmetrica/appmetrica-sdk-ios", .upToNextMinor(from: "5.0.0") ), ],
-
Добавьте необходимые модули к таргетам вашего проекта.
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
- Свойство
appForKids
удалено, смотрите инструкцию Использование SDK для детских приложений. - Свойство
crashReporting
удалено, смотрите инструкцию Работа с крэшами и ошибками. - Свойство
location
переименовано вcustomLocation
. - Свойство
logs
переименовано вareLogsEnabled
. - Свойство
statisticsSending
переименовано вdataSendingEnabled
.
- Свойство
- Интерфейс
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"), // Этот модуль отлючен
]
),
Если вы не нашли ответ на свой вопрос, то вы можете задать его через форму обратной связи. Пожалуйста, опишите возникшую проблему как можно подробнее. Если возможно, приложите скриншот.
Была ли статья полезна?
- Переименованные зависимости
- Одновременное использование двух версий AppMetrica SDK
- 1. Среди зависимостей приложения прописаны зависимости сразу от двух разных версий AppMetrica SDK
- 2. Одна из зависимостей приложения транзитивно зависит от AppMetrica SDK
- Как убедиться, что не используется YandexMobileMetrica
- Импортирование зависимостей
- Переименование API
- Работа с крэшами и ошибками
- Отправка события из JavaScript-кода WebView
- Использование SDK для детских приложений