Руководство по миграции на версию 2.0.0
При миграции приложения с YandexMobileMetricaPush на AppMetricaPush будут сохранены основные идентификаторы и данные, то есть процесс перехода на новую версию не должен вызвать проблем и аномалий в отчетах.
Для миграции на новую версию выполните следующие шаги:
- Обновите AppMetrica SDK по инструкции.
- Замените зависимости. Необходимые изменения указаны в разделе по переименованию зависимостей.
- Убедитесь, что вы не используете 2 версии AppMetrica Push SDK одновременно.
- Импортируйте зависимости в коде. Необходимые изменения указаны в разделе про импортирование зависимостей.
- В коде проекта замените те классы и методы, которые были просто переименованы. Необходимые изменения указаны в разделе по переименованию API.
- При возникновении вопросов напишите в поддержку.
Переименованные зависимости
pod 'YandexMobileMetricaPush', '~> 1.3.0'
Замените на:
pod 'AppMetricaPush', '~> 2.0.0' # Основной модуль для работы с Push SDK, обязателен для подключения
pod 'AppMetricaPushLazy', '~> 2.0.0' # Дополнительный модуль для Lazy пушей
Если используется Package.swift манифест
-
Удалите из файла
Package.swiftв вашем проекте зависимость.packageсmetrica-push-sdk-ios, а также все указания на зависимости в разделеtargets:внутри вашего проекта. -
Вставьте следующий код для добавления новой зависимости от
push-sdk-ios:dependencies: [ .package( url: "https://github.com/appmetrica/push-sdk-ios", from: "2.0.0" ) ], -
Добавьте необходимые модули к таргетам вашего проекта.
Модули AppMetrica Push SDK, которые вы можете подключить в зависимости от потребностей вашего проекта:
AppMetricaPush— обязательный основной модуль Push SDK. Должен быть подключен для работы.AppMetricaPushLazy— дополнительный модуль для Lazy пушей.
.target( name: "MyTargetName", dependencies: [ .product(name: "AppMetricaPush", package: "push-sdk-ios"), // .product(name: "AppMetricaPushLazy", package: "push-sdk-ios"), // Этот модуль отлючен ] ),
Одновременное использование двух версий AppMetrica Push SDK
Переименованы группа и названия основных артефактов, поэтому в одном приложении могут использоваться сразу две версии AppMetrica Push SDK: AppMetrica Push версий 1.3.0 и ниже (YandexMobileMetricaPush) и версий 2.0.0 и выше (AppMetricaPush). Такая ситуация нежелательна из-за двойной обработки пуш-уведомлений и необходимости реализовывать свой UINotificationCenterDelegate для вызова обработчиков из разных версий AppMetrica Push SDK.
Как убедиться, что не используется YandexMobileMetricaPush
Откройте файл Podfile.lock и выполните поиск YandexMobileMetricaPush.
Так же по блоку PODS в файле Podfile.lock можно понять какая зависимость ссылается на YandexMobileMetricaPush.
PODS:
...
FizzLibarry (10.0.0):
- BuzzLibrary (= 11.0.0)
- YandexMobileMetricaPush (< 2.0.0, >= 1.3.0)
...
Если зависимости установлены через Xcode
Откройте проект в Xcode. Убедитесь, что в Package Dependencies нет YandexMobileMetricaPush.
Если используется Package.swift манифест
Если ваш проект использует Package.swift манифест для управления зависимостями, выполните в терминале команду swift package show-dependencies в директории вашего проекта. Это выведет список всех зависимостей проекта, включая транзитивные.
.
└── fizz-library<https://github.com/appmetrica/fizz@10.0.0>
├──buzz-library<https://github.com/appmetrica/buzz@28.0.0>
├── metrica-sdk-push-ios<https://github.com/yandexmobile/metrica-sdk-push-ios@1.3.0>
Также можно проверить файл Package.resolved на наличие зависимости YandexMobileMetricaPush.
{
"object": {
"pins": [
//...
{
"package": "YandexMobileMetricaPush",
"repositoryURL": "https://github.com/yandexmobile/metrica-sdk-push-ios",
"state": {
"branch": null,
"revision": "37012eb6d43ad7d9fc32801855f0eb62a53deec7",
"version": "1.3.0"
}
},
//...
]
},
// ...
}
Импортирование зависимостей
import YandexMobileMetricaPush
Замените на:
import AppMetricaPush
import AppMetricaPushLazy // дополнительный модуль для Lazy пушей
#import <YandexMobileMetricaPush/YandexMobileMetricaPush.h>
Замените на:
#import <AppMetricaPush/AppMetricaPush.h>
#import <AppMetricaPushLazy/AppMetricaPushLazy.h> // дополнительный модуль для Lazy пушей
Переименование API
Префикс YMP удален.
- Интерфейс
YMPYandexMetricaPushпереименован вAppMetricaPush.- Метод
userNotificationCenterDelegateудален. Используйте свойствоuserNotificationCenterDelegate. - Метод
userNotificationCenterHandlerудален. Используйте свойствоuserNotificationCenterHandler.
- Метод
- Протокол
YMPUserNotificationCenterDelegateпереименован вUserNotificationCenterDelegate. - Протокол
YMPUserNotificationCenterHandlingпереименован вUserNotificationCenterHandling. - Перечисление
YMPYandexMetricaPushEnvironmentпереименовано вAppMetricaPushEnvironment.
Префикс YMP сменился на AMP.
- Интерфейс
YMPYandexMetricaPushпереименован вAMPAppMetricaPush.- Метод класса
userNotificationCenterDelegateпереименован в свойство классаuserNotificationCenterDelegate. - Метод класса
userNotificationCenterHandlerпереименован в свойства классаuserNotificationCenterHandler.
- Метод класса
- Протокол
YMPUserNotificationCenterDelegateпереименован вAMPUserNotificationCenterDelegate. - Протокол
YMPUserNotificationCenterHandlingпереименован вAMPUserNotificationCenterHandling. - Перечисление
YMPYandexMetricaPushEnvironmentпереименовано вAMPAppMetricaPushEnvironment.