SDK обновлений для Godot 2.0.0
Общие сведения
RuStore In-app updates SDK поддерживает актуальную версию приложения на устройстве пользователя. Это помогает пользователю увидеть обновления, оценить улучшение производительности и результат исправления ошибок.
Пример пользовательского сценария
Используйте RuStore In-app updates SDK для реализации различных способов обновлений. В настоящий момент поддерживаются: отложенное, тихое (без UI от RuStore) и принудительное обновление.
Ознакомьтесь с приложением-примером чтобы узнать, как правильно интегрировать SDK обновлений.
Условия корректной работы SDK
Для работы RuStore In-app updates SDK необходимо соблюдение следующих условий.
- Приложение загружено в Консоль RuStore.
- Приложение прошло модерацию (публиковать приложение необязательно).
- Подпись тестируемой сборки (например,
debug
) приложения должна совпадать с подписью сборки приложения, которая была загружена в консоль и прошла модерацию ранее (например,release
).
- ОС Android версии 7.0 или выше.
- Версия RuStore на устройстве пользователя актуальная.
- Пользователь авторизован в RuStore.
- Приложению RuStore разрешена установка приложений.
Подключение в проект
Для подключения выполните следующие шаги.
- Скопируйте проекты плагина из официального репозитория RuStore на GitFlic.
- Откройте в вашей IDE проект Android из папки
godot_plugin_libraries
. - Поместите в папку
godot_plugin_libraries/libs
пакетgodot-lib.xxx.yyy.template_release.aar
, гдеxxx.yyy
версия вашей редакции Godot Engine.
Пакет godot-lib.xxx.yyy.template_release.aar
для вашей версии Godot Engine можно найти на странице разработчика на Sourceforge.net.
- Выполните сборку проекта командой
gradle assemble
.
При успешном выполнении сборки в папке godot_example/android/plugins
будут созданы файлы:
RuStoreGodotAppUpdate.gdap
;RuStoreGodotAppUpdate.aar
;RuStoreGodotCore.gdap
;RuStoreGodotCore.aar
.
Обратите особое внимание, что библиотеки плагинов должны быть собраны под вашу версию Godot Engine.
-
Скопируйте содержимое папки
godot_example/android/plugins
в папкуyour_project/android/plugins
. -
В пресете сборки Android в списке Плагины отметьте строки Ru Store Godot App Update и Ru Store Godot Core.
Создание менеджера обновлений
Перед вызовом методов библиотеки необходимо создать менеджер обновлений.
var _appUpdate_client: RuStoreGodotAppUpdateManager = null
func _ready():
_appUpdate_client = RuStoreGodotAppUpdateManager.get_instance();
Проверка наличия обновлений
Прежде чем запрашивать обновление, проверьте, доступно ли обновление для вашего приложения. Для проверки наличия обновлений вызовите методget_app_update_info
. При вызове данного метода проверяются следующие условия.
- На устройстве пользователя установлена актуальная версия RuStore.
- Пользователь и приложение не должны быть заблокированы в RuStore.
- Приложению RuStore разрешена установка приложений.
- Пользователь авторизован в RuStore.
Перед использованием метода необходимо единожды выполнить подписку на события:
on_get_app_update_info_success
;on_get_app_update_info_failure
.
func _ready():
# Инициализация _appUpdate_client
_appUpdate_client.on_get_app_update_info_success.connect(_on_get_app_update_info_success)
_appUpdate_client.on_get_app_update_info_failure.connect(_on_get_app_update_info_failure)
func _on_get_app_update_info_success(response: RuStoreAppUpdateInfo):
pass
func _on_get_app_update_info_failure(error: RuStoreError):
pass
_appUpdate_client.get_app_update_info()
on_get_app_update_info_success
возвращает объект, который содержит информацию о необходимости обновления. Запросите информацию заранее, чтобы выполнить запуск скачивания обновления без задержки в удобный для пользователя момент времени.
class_name RuStoreAppUpdateInfo extends Object
var updateAvailability: ERuStoreUpdateAvailability.Item
var installStatus: ERuStoreInstallStatus.Item
var availableVersionCode: int
func _init(json: String = ""):
if json == "":
updateAvailability = ERuStoreUpdateAvailability.Item.UNKNOWN
installStatus = ERuStoreInstallStatus.Item.UNKNOWN
availableVersionCode = 0
else:
var obj = JSON.parse_string(json)
updateAvailability = int(obj["updateAvailability"])
installStatus = int(obj["installStatus"])
availableVersionCode = int(obj["availableVersionCode"])
-
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
— код версии обновления.
Запуск скачивания обновления возможен только в том случае, если поле updateAvailability
содержит значение UPDATE_AVAILABLE
.
on_get_app_update_info_failure
возвращает объект с информацией об ошибке. Структура ошибки описана в разделе Обработка ошибок.