SDK Универсальные Push-уведомления для Kotlin (версия 7.4.0)
SDK универсальных push-уведомлений от RuStore — это набор пакетов для работы с несколькими провайдерами одновременно. Вы можете нас троить отправку и получение push-уведомлений через:
- RuStore;
- Firebase Cloud Messaging(FCM);
- Huawei Mobile Services (HMS).
RuStore SDK можно использовать совместно с настроенными ранее сервисами HMS и FCM.
Пример реализации
Ознакомьтесь с приложением-примером, чтобы узнать, как правильно интегрировать SDK универсальных push-уведомлений.
Настройки для провайдера RuStore
Как push-sdk получает уведомления через провайдер RuStore
На мобильном устройстве пользователя должно быть установлено приложение, которое отвечает за доставку push-уведомлений от нашего SDK. Такое приложение называется «дистрибьютором». Оно периодически обращается к серверу, проверяет наличие новых уведомлений для конкретного приложения, где включен наш SDK, и при их появлении отправляет push-уведомления в конечное приложение.
Основным дистрибьютором служит RuStore, однако если у пользователя нет RuStore, роль резервного дистрибьютора может взять на себя одно из других приложений VK. Выбор делается удаленно на сервере, поэтому мы не раскрываем полный список возможных резервных вариантов. Состав приложений-дистрибьюторов может динамически меняться, поэтому на устройстве конкретного пользователя в любой момент может оказаться другое приложение в этой роли.
Для проверки того, что приложение-дистрибьютор установлено на устройстве пользователя, используйте методRuStoreUniversalPushClient.checkAvailability.
На устройстве пользователя только одно приложение может работать в качестве дистрибьютора, остальные находятся в "спящем" режиме. Если дистрибьютор был удален с устройства или у него изменились настройки, которые могут влиять на доставку push-уведомлений, то новый дистрибьютор автоматически выберется из резервных.
Условия работы
Чтобы push-уведомления передавались через провайдер RuStore, необходимо соблюдение следующих условий.
- Подпись и package name различных типов сборок вашего приложения (debug, release и т.д.) могут отличаться друг от друга. В таком случае вы должны создать в разделе Push-уведомления > Проекты из RuStore Консоль проект под каждый тип сборки..
- Используется актуальная версия SDK.
- Загружены данные о приложении в разделе Push-уведомления > Проекты из RuStore Консоль.
На устройстве пользователя установлено приложение-дистрибьютор (RuStore и т.д.)
Для проверки того, что приложение-дистрибьютор установлено на устройстве пользователя, используйте методRuStorePushClient.checkPushAvailability..- Если установлено приложение RuStore, то ему разрешен доступ к работе в фоновом режиме. Без этого разрешения push-уведомления будут приходить, но со значительной задержкой.
- Отпечаток подписи приложения, установленного на девайсе, совпадает с отпечатком подписи приложения, которое добавлено в разделе Push-уведомления > Проекты из RuStore Консоль.
Подключение в проект
Минимально поддерживаемая версия Kotlin — 1.8
Подключите репозитории в файле settings.gradle.
dependencyResolutionManagement {
repositories {
google()
mavenCentral()
// нужно для работы HMS
maven {url = uri("https://developer.huawei.com/repo/")}
// нужно для работы RuStore
maven {
url = uri("https://nexus-external.vkteam.ru/repository/maven/")
}
}
}
Если для получения артефактов вы использовали репозиторий https://artifactory-external.vkpartner.ru/artifactory/maven, перейдите на новый адрес https://nexus-external.vkteam.ru/repository/maven/. В какой-то момент старый репозиторий может перестать работать.
Подключение зависимостей
Чтобы подключить зависим ости, добавьте следующий код в build.gradle на уровне app. Этого достаточно только для работы пакета ru.rustore.sdk:universalrustore.
dependencies {
implementation 'ru.rustore.sdk:universalpush:7.4.0'
implementation 'ru.rustore.sdk:universalrustore:7.4.0'
implementation 'ru.rustore.sdk:universalhms:7.4.0'
implementation 'ru.rustore.sdk:universalfcm:7.4.0'
}
Для работы FCM и HMS выполните дополнительные шаги.
-
Добавьте следующий код в
build.gradleна уровнеapp.build.gradleplugins {
// ...
// нужно для FCM
id 'com.google.gms.google-services'
// нужно для HMS
id 'com.huawei.agconnect'
} -
Добавьте следующий код в
build.gradleна корневом уровне.build.gradledependencies {
// нужно для FCM
classpath 'com.google.gms:google-services:4.3.15'
// нужно для HMS
classpath 'com.huawei.agconnect:agcp:1.6.0.300'
classpath 'com.android.tools.build:gradle:7.4.0' -
Добавьте следующий код в
settings.gradleна корневом уровне.settings.gradlepluginManagement {
repositories {
google()
mavenCentral()
gradlePluginPortal()
// нужно для работы HMS
maven {url = uri("https://developer.huawei.com/repo/")}
}
}