SDK Обновление приложений для React Native (версия 6.0.0)
Общие сведения
RuStore In-app updates SDK поддерживает актуальную версию приложения на устройстве пользователя. Это помогает пользователю увидеть обновления, оценить улучшение производительности и результат исправления ошибок.
Пример реализации
Используйте RuStore In-app updates SDK для реализации различных способов обновлений. В настоящий момент поддерживаются: отложенное, тихое (без UI от RuStore) и принудительное обновление.
Ознакомьтесь с приложением-примером чтобы узнать, как правильно интегрировать SDK обновлений.
Пользовательские сценарии
- Отложенное обновление
- Принудительное обновление
- Тихое обновление



Подключение в проект
Для подключения пакета к проекту выполните следующую команду.
// HTTPS
npm install git+https://git@gitflic.ru/project/rustore/react-native-rustore-update-sdk.git
// SSH
npm install git+ssh://git@gitflic.ru/project/rustore/react-native-rustore-update-sdk.git
Создание менеджера обновлений
Для работы механизма обновлений необходимо выполнить инициализацию SDK
RustoreUpdateClient.init();
Проверка наличия обновлений
Прежде чем запрашивать обновление, проверьте, доступно ли обновление для вашего приложения. Для проверки наличия обновлений вызовите методgetAppUpdateInfo(). При вызове данного метода проверяются следующие условия.
- На устройстве польз ователя установлена актуальная версия RuStore.
Пользователь и приложение не должны быть заблокированы в RuStore
.- Приложению RuStore разрешена установка приложений.
- Пользователь авторизован в RuStore.
В ответ на данный метод вы получите объект appUpdateInfo, который будет содержать в себе информацию о необходимости обновления.
try {
const appUpdateInfo = await RustoreUpdateClient.getAppUpdateInfo();
console.log(appUpdateInfo);
} catch (err) {
console.log(err);
}
AppUpdateInfo содержит набор параметров, необходимых для определения доступности обновления.
-
updateAvailability— доступность обновления:UNKNOWN (int == 0)— по умолчанию;UPDATE_NOT_AVAILABLE (int == 1)— обновление не нужно;UPDATE_AVAILABLE (int == 2)— обновление требуется загрузить или обновление уже загружено на устройство пользователя;DEVELOPER_TRIGGERED_UPDATE_IN_PROGRESS (int == 3)— обновление уже скачивается или установка уже запущена.
-
installStatus— статус установки обновления, если пользователь уже устанавливает обновление в текущий момент времени:UNKNOWN (int == 0)— по умолчанию;DOWNLOADED (int == 1)— скачано;DOWNLOADING (int == 2)— скачивается;FAILED (int == 3)— ошибка;PENDING (int == 5)— в ожидании.
Запуск скачивания обновления возможен только в том случае, если поле updateAvailability содержит значение UPDATE_AVAILABLE.
Скачивание и установка обновлений
Использование слушателя
После подтверждения доступности обновления (AppUpdateInfo) вы можете запросить статус скачива ния обновления — для этого запустите слушатель статуса скачивания обновления.
Проверка статуса скачивания обновления
Используйте метод eventEmitter.addListener.
const listener = useRef<EmitterSubscription>();
listener.current = eventEmitter.addListener(Events.INSTALL_STATE_UPDATE, async (state: InstallState) => {
switch (state.installStatus) {
case InstallStatus.DOWNLOADED: {
// Обновление готово к установке
break;
}
case InstallStatus.DOWNLOADING: {
// Здесь можно отобразить прогресс скачивания
break;
}
case InstallStatus.FAILED: {
console.log(`Ошибка при загрузке: ${installState?.installErrorCode}`);
break;
}
}
}
);
Объект state описывает текущий статус скачивания. Ниже представлено содержимое объекта.
-
installStatus— статус установки обновления, если пользователь уже устанавливает обновление в текущий момент времени:UNKNOWN (int == 0)— по умолчанию;DOWNLOADED (int == 1)— скачано;DOWNLOADING (int == 2)— скачивается;FAILED (int == 3)— ошибка;PENDING (int == 5)— в ожидании;
В SDK обновлений нет особого статуса для ситуации, когда пользователь отменил скачивание обновления. Если пользователь прервал обновление на этапе скачивания, installStatus возвращает исходный статус UNKNOWN (0) с кнопкой Скачать.
Если пользователь уже скачал обновление, но отменил установку, то installStatus вернёт значение DOWNLOADED (1).
Рассмотрим следующие варианты.
- Пользователь начал скачивание обновления, но отменил скачивание — в этом случае:
updateAvailability—UPDATE_AVAILABLE(2);installStatus—UNKNOWN(0).
- Пользователь скачал файл обновления, но не стал его устанавливать — в этом случае:
updateAvailability—UPDATE_AVAILABLE(2);installStatus—DOWNLOADED(1).
bytesDownloaded— количество загруженных байт;totalBytesToDownload— общее количество байт, которое необходимо скачать;installErrorCode— код ошибки во время скачивания. Коды ошибок описаны в разделе Обработка ошибок.
Удаление слушателя
Если необходимости в слушателе больше нет, воспользуйтесь методом удаления слушателя remove().
listener.current?.remove();