Скачивание обновлений
После подтверждения доступности обновления вы можете запросить у пользователя скачивание обновления, но перед этим необходимо запустить слушатель статуса скачивания обновления, используя метод registerListener().
updateManager.registerListener { state ->
if (state.installStatus == InstallStatus.DOWNLOADED) { // Update is ready to install } } |
Объект state описывает текущий статус загрузки обновления. Объект содержит:
- installStatus — статус установки обновления, если пользователь уже устанавливает обновление в текущий момент времени:
- UNKNOWN — по умолчанию;
- DOWNLOADED — загружено;
- DOWNLOADING — загружается;
- FAILED — ошибка;
- INSTALLING — устанавливается;
- PENDING — в ожидании.
- bytesDownloaded — количество загруженных байт.
- totalBytesToDownload — общее количество байт, которое необходимо загрузить.
- installErrorCode — код ошибки во время загрузки.
Если необходимости в слушателе больше нет, то воспользуйтесь методом удаления слушателя unregisterListener(), передав в метод ранее зарегистрированный слушатель.
|
Скачивание с UI от RuStore
Для запуска скачивания обновления приложения вызовите метод startUpdateFlow(), поместив в него объект AppUpdateInfo, полученный в методе getAppUpdateInfo().
Объект AppUpdateInfo после однократного использования становится невалидным. Для повторного вызова метода startUpdateFlow() запросите AppUpdateInfo повторно используя метод getAppUpdateInfo().
updateManager .startUpdateFlow(appUpdateInfo, AppUpdateOptions.Builder().build()) .addOnSuccessListener { resultCode -> } .addOnFailureListener { throwable -> } |
Если пользователь подтвердил скачивание обновления, то resultCode = Activity.RESULT_OK, если отказался, то resultCode = Activity.RESULT_CANCEL.
После вызова метода вы можете следить за статусом скачивания обновления в слушателе. Если в слушателе вы получили статус DOWNLOADED, то вы можете вызвать метод установки обновления. Рекомендуем уведомить пользователя о готовности установки обновления.
Метод может вернуть ошибку. Возможные ошибки
Скачивание без UI от RuStore (доступен с версии 1.7.1)
Рекомендуем реализовать собственный интерфейс для работы с обновлением, чтобы не портить пользовательский опыт в приложении.
Для запуска обновления без UI используйте метод appUpdateType(SILENT) у AppUpdateOptions.Builder(). При вызове метода с SILENT опцией будет произведена стандартная проверка доступности обновления. В случае успеха начнётся скачивание.
updateManager
.startUpdateFlow(appUpdateInfo, AppUpdateOptions.Builder().appUpdateType(SILENT).build()) .addOnSuccessListener { resultCode -> } .addOnFailureListener { throwable -> } |
При вызове onSuccessListener с resultCode = Activity.RESULT_OK будет зарегистрирована задача на скачивание обновления. За прогрессом можно следить через метод updateManager.registerListener. В данном флоу может быть вызван только onSuccessListener с resultCode = Activity.RESULT_OK, либо onFailureListener.
Детальнее со списком ошибок можно ознакомиться в разделе «Возможные ошибки»