flutter_rustore_update

Creator: coderz1093

Last updated:

Add to Cart

Description:

flutter rustore update

flutter_rustore_update #
Документация RuStore #
Общее #
RuStore In-app updates SDK помогает поддерживать актуальную версию вашего приложения на устройстве пользователя.
Когда пользователи поддерживают приложение в актуальном состоянии, они могут опробовать новые функции, а также воспользоваться улучшениями производительности и исправлениями ошибок.
Вы можете использовать RuStore In-app updates SDK для отображения процесса обновления приложения, который обеспечивает фоновую загрузку и установку обновления с контролем состояния. Пользователь сможет использовать ваше приложение в момент загрузки обновления.
Пример пользовательского сценария #

Условия корректной работы SDK #
Для работы RuStore In-app updates SDK необходимо соблюдение следующих условий:

ОС Android версии 7.0 или выше.
На устройстве пользователя должен быть установлен RuStore.
Версия RuStoreApp на устройстве пользователя должна быть актуальной.
Приложению RuStore должна быть разрешена установка приложений.

Пример реализации #
Для того, чтобы узнать как правильно интегрировать пакет для работы с push-уведомлениями, рекомендуется ознакомиться с приложением-примером
https://gitflic.ru/project/rustore/flutter-rustore-update
Подключение в проект #
Для подключения пакета к проекту нужно выполнить команду
flutter pub add flutter_rustore_update
copied to clipboard
Эта команда добавит строчку в файл pubspec.yaml
dependencies:
flutter_rustore_update: ^6.1.0
copied to clipboard
Проверка наличия обновлений #
Прежде чем запрашивать обновление, проверьте, доступно ли обновление для вашего приложения. Для проверки наличия обновлений вызовите метод info(). При вызове данного метода проверяются следующие условия:

На устройстве пользователя должен быть установлен RuStore.
Версия RuStoreApp на устройстве пользователя должна быть актуальной.
Пользователь и приложение не должны быть заблокированы в RuStore.

В ответ на данный метод вы получите объект info, который будет содержать в себе информацию о необходимости обновления.
RustoreUpdateClient.info().then((info) {
print(info);
}).catchError((err) {
print(err);
});
copied to clipboard
Объект info содержит набор параметров, необходимых для определения доступности обновления:

updateAvailability - доступность обновления:


UPDATE_AILABILITY_NOT_AVAILABLE - обновление не нужно.
UPDATE_AILABILITY_AVAILABLE - обновление требуется загрузить или обновление уже загружено на устройство пользователя.
UPDATE_AILABILITY_IN_PROGRESS - обновление уже скачивается или установка уже запущена.
UPDATE_AILABILITY_UNKNOWN - статус по умолчанию.


installStatus - статус установки обновления, если пользователь уже устанавливает обновление в текущий момент времени:


INSTALL_STATUS_DOWNLOADED - скачано.
INSTALL_STATUS_DOWNLOADING - скачивается.
INSTALL_STATUS_FAILED - ошибка.
INSTALL_STATUS_INSTALLING - устанавливается.
INSTALL_STATUS_PENDING - в ожидании.
INSTALL_STATUS_UNKNOWN - по умолчанию.

Запуск скачивания обновления возможен только в том случае, если поле updateAvailability содержит значение UPDATE_AILABILITY_AVAILABLE.
Метод может вернуть ошибку, детально со списком ошибок можно ознакомиться в разделе *Возможные ошибки.
Скачивание обновления #
После подтверждения доступности обновления вы можете запросить у пользователя скачивание обновления, но перед этим необходимо запустить слушатель статуса скачивания обновления, используя метод listener()
RustoreUpdateClient.listener((value) {
print("listener installStatus ${value.installStatus}");
print("listener bytesDownloaded ${value.bytesDownloaded}");
print("listener totalBytesToDownload ${value.totalBytesToDownload}");
print("listener installErrorCode ${value.installErrorCode}");

if (value.installStatus == INSTALL_STATUS_DOWNLOADED) {
// тут можно вызывать метод complete()
}
});
copied to clipboard
Объект state описывает текущий статус скачивания обновления. Объект содержит:

installStatus - статус установки обновления, если пользователь уже устанавливает обновление в текущий момент времени:


INSTALL_STATUS_DOWNLOADED - скачано.
INSTALL_STATUS_DOWNLOADING - скачивается.
INSTALL_STATUS_FAILED - ошибка.
INSTALL_STATUS_INSTALLING - устанавливается.
INSTALL_STATUS_PENDING - в ожидании.
INSTALL_STATUS_UNKNOWN - по умолчанию.


bytesDownloaded - количество загруженных байт.
totalBytesToDownload - общее количество байт, которое необходимо скачать.
installErrorCode - код ошибки во время скачивания. Детальнее с возможными ошибками можно ознакомиться в разделе Возможные ошибки.

Отложенное обновление #
Скачивание с UI от RuStore
Для запуска скачивания обновления приложения вызовите метод download().
RustoreUpdateClient.download().then((value) {
print("download code ${value.code}");
}).catchError((err) {
print("download err ${err}");
});
copied to clipboard
Если пользователь подтвердил скачивание обновления, то value.code = ACTIVITY_RESULT_OK, если отказался, то value.code = ACTIVITY_RESULT_CANCELED.
После вызова метода вы можете следить за статусом скачивания обновления в слушателе. Если в слушателе вы получили статус INSTALL_STATUS_DOWNLOADED, то вы можете вызвать метод установки обновления complete(). Рекомендуем уведомить пользователя о готовности установки обновления.
Метод может вернуть ошибку. Детальнее со списком ошибок можно ознакомиться в разделе Возможные ошибки.
Принудительное обновление #
Скачивание с UI от RuStore
Для запуска скачивания принудительного обновления приложения вызовите метод immediate().
RustoreUpdateClient.immediate().then((value) {
print("silent code ${value.code}");
}).catchError((err) {
print("immediate err ${err}");
});
copied to clipboard
resultCode (Int):

ACTIVITY_RESULT_OK (-1) — обновление выполнено, код может не быть получен, т. к. приложение в момент обновления завершается.
ACTIVITY_RESULT_CANCELED (0) — флоу прервано пользователем, или произошла ошибка. Предполагается, что при получении этого кода следует завершить работу приложения.
ACTIVITY_RESULT_NOT_FOUND (2) — RuStore не установлен, либо установлена версия, которая не поддерживает принудительное обновление (RuStore versionCode < 191).

throwable — ошибка старта сценария обновления.
При успешном обновлении дальнейших действий не требуется.
Тихое обновление #
Скачивание без UI от RuStore
Для данного типа обновления рекомендуется реализовать свой интерфейс.
Для запуска скачивания тихого обновления приложения вызовите метод silent().
RustoreUpdateClient.silent().then((value) {
print("silent code ${value.code}");
}).catchError((err) {
print("silent err ${err}");
});
copied to clipboard
При вызове then с code = ACTIVITY_RESULT_OK будет зарегистрирована задача на скачивание обновления.
В данном сценарии может быть вызван только then с ACTIVITY_RESULT_OK, либо catchError.
После вызова метода вы можете следить за статусом скачивания обновления в слушателе.
После получения статуса INSTALL_STATUS_DOWNLOADED вы можете вызвать метод установки обновления. Рекомендуется уведомить пользователя о готовности обновления к установке.
Установка обновления #
Гибкое завершение обновления #
Обновление с UI от RuStore:
После завершения скачивания apk-файла обновления вы можете запустить установку обновления. Для запуска установки обновления вызовите метод completeUpdateFlexible().
RustoreUpdateClient.completeUpdateFlexible().catchError((err) {
print("completeUpdateFlexible err ${err}");
});
copied to clipboard
1.Пользователю будет показан UI-диалог завершения обновления.
2.В случае успешного обновления приложение будет перезапущено.
Обновление происходит через нативный инструмент android. В случае успешного обновления приложение перезапустится.
Тихое завершение обновления #
Обновление без UI от RuStore:
После завершения скачивания apk-файла обновления вы можете запустить установку обновления. Для запуска установки обновления вызовите метод completeUpdateSilent().
RustoreUpdateClient.completeUpdateSilent().catchError((err) {
print("completeUpdateSilent err ${err}");
});
copied to clipboard
1.UI-диалог завершения обновления не будет показан.
2.В случае успешного обновления приложение будет закрыто.
Обновление происходит через нативный инструмент android. В случае успешного обновления приложение будет закрыто.
На этапе обновления могут возникнуть ошибки. Детальнее с ними можно ознакомиться в разделе Возможные ошибки.
Возможные ошибки #
Если вы получили в ответ onFailure, то не рекомендуем самостоятельно отображать ошибку пользователю. Отображение ошибки может негативно повлиять на пользовательский опыт.
Список возможных ошибок:

UPDATE_ERROR_DOWNLOAD - Ошибка при скачивании.
UPDATE_ERROR_BLOCKED - Установка заблокированна системой.
UPDATE_ERROR_INVALID_APK - Некорректный APK обновления.
UPDATE_ERROR_CONFLICT - Конфликт с текущей версией приложения.
UPDATE_ERROR_STORAGE - Недостаточно памяти на устройстве.
UPDATE_ERROR_INCOMPATIBLE - Несовместимо с устройством.
UPDATE_ERROR_APP_NOT_OWNED - Приложение не куплено.
UPDATE_ERROR_INTERNAL_ERROR - Внутренняя ошибка.
UPDATE_ERROR_ABORTED - Пользователь отказался от установки обновления.
UPDATE_ERROR_APK_NOT_FOUND - apk для запуска установки не найден.
UPDATE_ERROR_EXTERNAL_SOURCE_DENIED - Запуск обновления запрещён. Например, в первом методе вернулся ответ о том, что обновление недоступно, но пользователь вызывает второй метод.

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files:

Customer Reviews

There are no reviews.