Скачивание обновлений
После подтверждения доступности обновления вы можете запросить у пользователя скачивание обновления, но перед этим необходимо запустить слушатель статуса скачивания обновления, используя метод registerListener().
RuStoreAppUpdateManager.Instance.RegisterListener(listener); |
listener — объект класса, реализующего интерфейс IInstallStateUpdateListener.
public interface IInstallStateUpdateListener { public void OnStateUpdated(InstallState state); } |
Объект state описывает текущий статус скачивания обновления и содержит:
- installStatus — статус установки обновления, если пользователь уже устанавливает обновление в текущий момент времени:
-
DOWNLOADED — загружено.
-
DOWNLOADING — загружается.
-
FAILED — ошибка.
-
INSTALLING — устанавливается.
-
PENDING — в ожидании.
- UNKNOWN — статус по умолчанию.
-
- bytesDownloaded — количество загруженных байт.
- totalBytesToDownload — общее количество байт, которое необходимо загрузить.
- installErrorCode — код ошибки во время скачивания:
-
ERROR_UNKNOWN — Неизвестная ошибка.
-
ERROR_DOWNLOAD — Ошибка при скачивании.
-
ERROR_BLOCKED — Установка заблокирована системой.
-
ERROR_INVALID_APK — Некорректный APK обновления.
-
ERROR_CONFLICT — Конфликт с текущей версией приложения.
-
ERROR_STORAGE — Недостаточно памяти на устройстве.
-
ERROR_INCOMPATIBLE — Несовместимо с устройством.
-
ERROR_APP_NOT_OWNED — Приложение не куплено.
-
ERROR_INTERNAL_ERROR — Внутренняя ошибка.
- ERROR_ABORTED — Пользователь отказался от установки обновления.
- ERROR_APK_NOT_FOUND — apk-файл для запуска установки не найден.
- ERROR_EXTERNAL_SOURCE_DENIED — Запуск обновления запрещён. Например, в первом методе вернулся ответ о том, что обновление недоступно, но пользователь вызывает второй метод.
-
Если необходимости в слушателе больше нет, воспользуйтесь методом удаления слушателя unregisterListener(), передав в метод ранее зарегистрированный слушатель.
RuStoreAppUpdateManager.Instance.UnregisterListener(listener); |
Для запуска скачивания обновления приложения вызовите метод StartUpdateFlow().
Объект AppUpdateInfo после однократного использования становится невалидным. Для повторного вызова метода startUpdateFlow() запросите AppUpdateInfo повторно используя метод getAppUpdateInfo().
RuStoreAppUpdateManager.Instance.StartUpdateFlow( onFailure: (error) => { // Handle error }, onSuccess: (resultCode) => { // Handle flow result }); |
Если пользователь подтвердил скачивание обновления, resultCode = UpdateFlowResult.RESULT_OK, если отказался, resultCode = UpdateFlowResult.RESULT_CANCELED.
После вызова метода вы можете следить за статусом скачивания обновления в слушателе. Если в слушателе вы получили статус DOWNLOADED, вы можете вызвать метод установки обновления. Рекомендуем уведомить пользователя о готовности установки обновления.
Метод может вернуть ошибку. Подробная информация приведена в разделе Возможные ошибки.