Скачивание обновлений

После подтверждения доступности обновления вы можете запросить у пользователя скачивание обновления, но перед этим необходимо запустить слушатель статуса скачивания обновления, используя метод 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(), передав в метод ранее зарегистрированный слушатель.
updateManager.unregisterListener(listener)

Скачивание с 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.

Детальнее со списком ошибок можно ознакомиться в разделе «Возможные ошибки»

Обновлено 31 мая 2023 г.
Was this information helpful?