SDK обновлений приложений
Интеграция стороннего SDK для обновлений может значительно улучшить пользовательский опыт и упростить процесс управления обновлениями вашего приложения. Однако, как и с любой сторонней библиотекой, могут возникнуть определённы е проблемы и вызовы. В этом руководстве мы рассмотрим, зачем вам может понадобиться интеграция такого SDK и какие проблемы могут возникнуть в процессе.
Зачем интегрировать стороннее SDK для обновлений?
- Улучшение пользовательского опыта
RuStore In-App Updates SDK, позволяет пользователям получать обновления без необходимости покидать приложение или заходить в магазин приложений. Это делает процесс обновления более плавным и удобным. - Повышение безопасности. Регулярные обновления могут включать исправления безопасности. Интеграция SDK для обновлений помогает убедиться, что пользователи всегда используют самую безопасную версию вашего приложения.
- Быстрая доставка новых функций
Сторонние SDK для обновлений позволяют быстро доставлять новые функции и улучшения пользователям. Это особенно важно для приложений, которые активно развиваются и требуют частых обновлений. - Снижение нагрузки на разработчиков
Интеграция стороннего SDK для обновлений автоматизирует процесс проверки и установки обновлений, что снижает нагрузку на разработчиков и позволяет им сосредоточиться на улучшении функциональности приложения.
Интеграция SDK обновлений RuStore в приложение
Добавление зависимости
Добавление любого нового SDK начинается с добавления зависимости в ваше приложение.
implementation("ru.rustore.sdk:appupdate:6.0.0")
Для работы с SDK обновлений нам нужен менеджер обновлений, создание менеджера обновлений.
val updateManager = RuStoreAppUpdateManagerFactory.create(context)
Условия работы SDK обновлений
Ниже представлены условия доступности работа SDK обновлений.
- Загружены данные о приложении в разделе Push-уведомления > Проекты из Консоль RuStore.
Приложение прошло модерацию (публиковать приложение необязательно).
.
- Подпись и package name различных типов сборок вашего приложения (debug, release и т.д.) могут отличаться друг от друга. В таком случае вы должны создать в разделе Push-уведомления > Проекты из Консоль RuStore проект под каждый тип сборки..
- ОС Android версии 7.0 или выше.
- Версия RuStore на устройстве пользователя актуальная.
- Пользователь авторизован в RuStore.
- Приложению RuStore разрешена установка приложений.
Проверка доступности SDK
Проверить доступность SDK можно с помощью метода getAppUpdateInfo()
.
В ответ мы получим объект AppUpdateInfo
, который содержит в себе информацию об обновлении. Объект AppUpdateInfo
содержит набор параметров, необходимых для определения доступности обновления.
updateAvailability
— доступность обновления.installStatus
— статус установки обновления, если пользователь уже устанавливает обновление в текущий момент времени.
Подробнее о статусах смотрите в документации.
Ниже представлен пример вызова метода getAppUpdateInfo()
.
ruStoreAppUpdateManager
.getAppUpdateInfo()
.addOnSuccessListener { appUpdateInfo ->
if (appUpdateInfo.updateAvailability == UpdateAvailability.UPDATE_AVAILABLE) {
// Обновление доступно(здесь можно зарегистрировать listener и начать загрузку)
}
}
.addOnFailureListener { throwable ->
Log.e(TAG, "getAppUpdateInfo error", throwable)
}
После подтверждения возможности скачивания обновл ения из магазина приложений на устройство пользователя, можно запросить статус скачивания обновления.
Для этого нам понадобится специальный слушатель статуса скачивания обновления registerListener
.
Создание и использования слушателя.
ruStoreAppUpdateManager.registerListener { state ->
when (state.installStatus) {
InstallStatus.DOWNLOADED -> {
// Обновление готово к установке
}
InstallStatus.DOWNLOADING -> {
val totalBytes = state.totalBytesToDownload
val bytesDownloaded = state.bytesDownloaded
// Здесь можно отобразить прогресс скачивания
}
InstallStatus.FAILED -> {
Log.e(TAG, "Downloading error")
}
}
}
Подробнее о статусах скачивания смотрите в документации.
Типы обновлений приложения
RuStore SDK обновлений предоставляет 3 типа обновлений:
FLEXIBLE
(отложенное обновление);SILENT
(тихое обновление);IMMEADIATE
(принудительное обновление).
FLEXIBLE
(отложенное обновление)
Самый распространённый тип и привычный пользователям сценарий:
- пользователю будет показан диалог с UI от RuStore для подтверждения обновления;
- при нажатии на кнопку Обновить покажется диалоговое окно для подтверждения установки обновления;
- после завершения установки приложение закроется.
Ниже представлен пример вызова FLEXIBLE
обновления.
startUpdateFlow(appUpdateInfo, AppUpdateOptions.Builder().appUpdateType(FLEXIBLE).build())
SILENT
(тихое обновление)
Обновления без UI (шторки) RuStore с предложением обновиться — пользователю останется только подтвердить установку:
- пользователю будет показано диалоговое окно для подтверждения установки обновления (обновление будет скачано в фоне);
- после завершения установки приложение закроется.
Ниже представлен пример вызова SILENT
обновления.
startUpdateFlow(appUpdateInfo, AppUpdateOptions.Builder().appUpdateType(SILENT).build())