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();
Запуск скачивания обновления
Отложенное обновление
Запуск сценария обновления
Для запуска скачивания обновления приложения вызовите метод download().
Объект AppUpdateInfo после однократного использования становится невалидным. Для повторного вызова метода download() запросите AppUpdateInfo, снова используя метод getAppUpdateInfo().
try {
const resultCode = await RustoreUpdateClient.download();
console.log(resultCode);
} catch (err) {
console.log(err);
}
Если пользователь подтвердил скачивание обновления, тогда resultCode = ResultCode.RESULT_OK, если отказался, то resultCode = ResultCode.RESULT_CANCEL.
После получения статуса InstallStatus.DOWNLOADED вы можете вызвать метод установки обновления completeUpdate().
Рекомендуется уведомить пользователя о готовности обновления к установке.
Метод может вернуть ошибку.