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




Подключение в проект
Для подключения выполните следующие шаги.
- Скопируйте проекты плагина из официального репозитория RuStore на GitFlic.
- Откройте в вашей IDE проект Android из папки
extension_libraries
. - Выполните сборку проекта командой
gradle assemble
. При успешном выполнении сборки в папкахappupdate_example/extension_rustore_appupdate/lib/android
иappupdate_example/extension_rustore_core/lib/android
будут созданы файлы:RuStoreDefoldAppUpdate.jar
RuStoreDefoldCore.jar
- Скопируйте папки
appupdate_example/extension_rustore_appupdate
иappupdate_example/extension_rustore_core
в корень вашего проекта.
Создание менеджера обновлений
Перед вызовом методов библиотеки необходимо создать менеджер обновлений.
function init(self)
rustoreappupdate.init()
end
Проверка наличия обновлений
Прежде чем запрашивать обновление, проверьте, доступно ли обновление для в ашего приложения. Для проверки наличия обновлений вызовите методget_appupdateinfo
. При вызове данного метода проверяются следующие условия.
- На устройстве пользователя установлена актуальная версия RuStore.
- Пользователь и приложение не должны быть заблокированы в RuStore.
- Приложению RuStore разрешена установка приложений.
- Пользователь авторизован в RuStore.
Перед использованием метода необходимо единожды выполнить подписку на события:
rustore_get_app_update_info_success
;rustore_get_app_update_info_failure
.
function init(self)
rustorecore.connect("rustore_get_app_update_info_success", _on_get_app_update_info_success)
rustorecore.connect("rustore_get_app_update_info_failure", _on_get_app_update_info_failure)
-- Инициализация rustoreappupdate
end
function _on_get_app_update_info_success(self, channel, value)
local data = json.decode(value)
end
function _on_get_app_update_info_failure(self, channel, value)
local data = json.decode(value)
end
rustoreappupdate.get_appupdateinfo()
rustore_get_app_update_info_success
возвращает строку JSON, который содержит информацию о необходимости обновления. Запросите информацию заранее, чтобы выполнить запуск скачивания обновления без задержки в удобный для пользователя момент времени.
-
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)
— в ожидании.
-
availableVersionCode
— код версии обновления.
rustore_get_app_update_info_failure
возвращает строку JSON с информацией об ошибке. Структура ошибки описана в разделе Обработка ошибок.
Запуск скачивания обновления возможен только в том случае, если поле updateAvailability
содержит значение UPDATE_AVAILABLE
.
Скачивание и установка обновлений
Использование слушателя
После подтверждения доступности обновления вы можете получать статус скачивания обновления. Для этого необходимо выполнить подписку на событие on_state_updated
и вызовом метода register_listener
запустить слушатель статуса скачивания.
Проверка статуса скачивания обновления
Подписка на событие rustore_on_state_updated
выполняется единожды. Прослушивание процесса скачивания активируется с помощью метода register_listener
.
function init(self)
-- Инициализация rustoreappupdate
rustorecore.connect("rustore_on_state_updated", _on_state_updated)
rustoreappupdate.register_listener()
end
function _on_state_updated(self, channel, value)
local data = json.decode(value)
end
Обратный вызов (callback) rustore_on_state_updated
возвращает строку JSON (объект InstallState
) с информацией о ходе процесса обновления. Объект содержит следующие поля.
-
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
— общее количество байт, которое необходимо скачать.packageName
— имя пакета обновления.installErrorCode
— код ошибки во время скачивания. Коды ошибок описаны в разделе Обработка ошибок.
Удаление слуш ателя
Если необходимости в слушателе больше нет, воспользуйтесь методом удаления слушателя unregister_listener
.
rustoreappupdate.unregister_listener()
Запуск скачивания обновления
Отложенное обновление
Описание сценария отложенного обновления
Обновление с UI от RuStore

- Пользователю будет показан диалог с UI от RuStore для подтверждения обновления.
- При нажатии на кнопку Обновить покажется диалоговое окно для подтверждения установки обновления.
- После завершения установки приложение закроется.
Запуск сценария обновления
Перед использованием методов запуска сценариев обновления необходимо единожды выполнить подписку на события:
rustore_start_update_flow_success
;rustore_start_update_flow_failure
.
Для запуска скачивания обновления приложения используйте метод start_update_flow_delayed
.
Объект AppUpdateInfo
после однократного использования становится невалидным. Для повторного вызова метода start_update_flow_delayed
запросите объект AppUpdateInfo
повторно, используя метод get_appupdateinfo
.
См. раздел Проверка наличия обновлений.
function init(self)
rustorecore.connect("rustore_start_update_flow_success", _on_start_update_flow_success)
rustorecore.connect("rustore_start_update_flow_failure", _on_start_update_flow_failure)
-- Инициализация rustoreappupdate
end
function _on_start_update_flow_success(self, channel, value)
local data = json.decode(value)
end
function _on_start_update_flow_failure(self, channel, value)
local data = json.decode(value)
end
rustoreappupdate.start_update_flow_delayed()
Обратный вызов (callback) rustore_start_update_flow_success
возвращает строку JSON с информацией о результате обновления в поле flowResult (number)
:
RESULT_OK (int = -1)
— пользователь подтвердил скачивание обновления.RESULT_CANCELED (int = 0)
— пользователь отказался от скачивания обновления.
Обратный вызов (callback) rustore_start_update_flow_failure
возвращает строку JSON с информацией об ошибке. Структура ошибки описана в разделе Обработка ошибок.
После получения статуса DOWNLOADED (int == 1)
в поле installStatus
объекта InstallState
, может быть вызван метод установки обновления.