SDK Remote Config для Godot Engine (версия 7.0.0)
SDK Remote Config – это облачный сервис, который позволяет изменять поведение и внешний вид вашего приложения, не требуя от пользователей загрузки обновления приложения. Плагин инкапсулирует в себе запрос конфигурации с сервера, кэширование, фоновое обновление. Имеет удобный интерфейс API для получения данных.
Пример реализации
Ознакомьтесь с приложением-примером, чтобы узнать, как правильно интегрировать SDK Remote Config.
Ключевые особенности
- Выбор наиболее удобного механизма обновления конфигурации.
- Возможность указывать процент распространения конфигурации на аудиторию.
- Возможность передавать дополнительную информацию для построения воронки конкретной конфигурации. Формировать конфигурацию можно даже для конкретных пользователей.
- Набор callback, который можно использовать для аналитики.
- Минимальное количество внешних зависимостей.
Подключение в проект
Библиотеки плагинов в репозитории собраны для Godot Engine 4.2.1. Если вы используете другую версию Godot Engine, выполните шаги раздела Пересборка плагина.
- Скопируйте проекты плагина и приложения-примера из официального репозитория RuStore на GitFlic.
- Скопируйте содержимое каталога
godot_example/android/plugins
в каталогyour_project/android/plugins
. - В пресете сборки Android в списке Плагины отметьте
Ru Store Godot Remote Config
иRu Store Godot Core
.
Инициализация
Создание RemoteConfigClient
Инициализация RuStoreGodotRemoteConfigBuilder
должна происходить в момент Application.onCreate()
, так как при запуске фоновой синхронизации SDK должна быть проиници ализирована.
Для инициализации RemoteConfigClient
выполните расширение класса Application
и добавьте в метод onCreate
следующий код.
import ru.rustore.godot.remoteconfig.model.GodotUpdateBehaviour;
import ru.rustore.godot.remoteconfig.RuStoreGodotRemoteConfigBuilder;
public class GodotRemoteConfigApplication extends Application {
public final String APP_ID = "a83c91d3-21b4-4891-841e-0ed0fc39a562";
public final int UPDATE_TIME = 15;
public final GodotUpdateBehaviour UPDATE_BEHAVIOUR = GodotUpdateBehaviour.Actual;
@Override
public void onCreate() {
super.onCreate();
RuStoreGodotRemoteConfigBuilder.INSTANCE.init(APP_ID, UPDATE_BEHAVIOUR, UPDATE_TIME, null, null, getApplicationContext());
}
}
APP_ID
— уникальный идентификатор инструмента Remote Config. Доступен в консоли разработчика RuStore на странице создания параметров Remote Config.UPDATE_TIME
— интервал таймера обновления в минутах.UPDATE_BEHAVIOUR
— параметр, определяющий поведение SDK. См. также Различия в значенияхUpdateBehaviour
.
Для замены класса Application
на GodotRemoteConfigApplication
добавьте атрибут android:name
к тегу application
в файле манифеста вашего проекта your_project/android/build/AndroidManifest.xml
.
<application
android:name="com.godot.game.GodotRemoteConfigApplication">
UpdateBehaviour
UpdateBehaviour
— это параметр, определяющий поведение SDK.
При создании экземпляра RemoteConfigClientBuilder
, по умолчанию используется значение UpdateBehaviour.Default
с интервалом синхронизации 15 минут.
Различия в значениях UpdateBehaviour
UpdateBehaviour | Описание |
---|---|
| При инициализации каждый запрос конфигурации выполняется через запрос к серверу. Значение Этот тип инициализации отменяет процесс фонового обновления. |
| При инициализации запрос конфигурации выполняется из локального постоянного хранилища, которое обновляется в указанный интервал. Если инициализация выполняется первый раз и локальное постоянное хранилище пустое, запрос отправляется на сервер. Скорость выполнения запроса зависит от объема данных и скорости сети. Доступ к конфигурации будет ожидать завершения инициализации. Значение Этот тип инициализации запускает процесс фонового обновления. |
| При инициализации запрос конфигурации выполняется из локального inMemory-хранилища. inMemory-хранилище заполняется результатом первого запроса из постоянного хранилища и сохраняется в таком виде до конца жизни процесса. Если инициализация выполняется первый раз и локальное постоянное хранилище пустое, запрос отправляется на сервер. Скорость выполн ения запроса зависит от объема данных и скорости сети. Доступ к конфигурации будет ожидать завершения инициализации. Значение Этот тип инициализации запускает процесс фонового обновления. |
Опциональные параметры инициализации
Установить опциональные параметры инициализации можно через интерфейс RemoteConfigParameters
.
package ru.rustore.godot.remoteconfig.model;
public interface RemoteConfigParameters {
String getAppBuild();
String getAppVersion();
String getDeviceId();
String getDeviceModel();
String getEnvironment();
String getOsVersion();
}
Для динамической передачи доступны параметры Account
и Language
с помощью методов setAccount
и setLanguage
соответственно. Методы setAccount
и setLanguage
могут быть вызваны в любое время.
import ru.rustore.godot.remoteconfig.model.GodotUpdateBehaviour;
import ru.rustore.godot.remoteconfig.RuStoreGodotRemoteConfigBuilder;
public final String APP_ID = "a83c91d3-21b4-4891-841e-0ed0fc39a562";
public final int UPDATE_TIME = 15;
public final GodotUpdateBehaviour UPDATE_BEHAVIOUR = GodotUpdateBehaviour.Actual;
public final String ACCOUNT = "MyAccount";
public final String LANGUAGE = "ru";
RemoteConfigClientParametersImpl parameters;
/* Ваша инициализация parameters */
RuStoreUnityRemoteConfigClient.INSTANCE.setAccount(ACCOUNT);
RuStoreUnityRemoteConfigClient.INSTANCE.setLanguage(LANGUAGE);
RuStoreGodotRemoteConfigBuilder.INSTANCE.init(APP_ID, UPDATE_TIME, UPDATE_BEHAVIOUR, parameters, null, getApplicationContext());
Получить текущие динамические параметры можно, используя методы getАccount
и getLanguage
.
String account = RuStoreUnityRemoteConfigClient.INSTANCE.setAccount();
String language = RuStoreUnityRemoteConfigClient.INSTANCE.setLanguage();
Параметр | Описание |
---|---|
OsVersion | Условие в конфигураторе: Os Version Позволят сравнивать OsVersion со значением, установленным в интерфейсе. По умолчанию OsVersion не передается, в этом случае возвращается конфиг по умолчанию. |
DeviceModel | Условие в конфигураторе: Device Model Позволят сравнивать DeviceModel со значением, установленным в интерфейсе. По умолчанию DeviceModel не передается, у этом случае возвращается конфиг по умолчанию. |
Language | Условие в конфигураторе: Language Позволят сравнивать Language со значением, установленным в интерфейсе. По умолчанию Language не передается, у этом случае возвращается конфиг по умолчанию.Для передачи Language необходимо реализовать ConfigRequestParameterProvider . |
Account | Условие в конфигураторе: Account Позволят сравнивать account со значением, установленным в интерфейсе.Ус ловие в конфигураторе: Account Percentile Позволят раздавать конфиг по значению account на определенный процент.Условие в конфигураторе: Interval Account Percentile Позволят раздавать конфиг по значению account на определенный процент и в определенный день.Для передачи Account необходимо реализовать ConfigRequestParameterProvider . |
DeviceId | Условие в конфигураторе: DeviceID Позволят сравнивать DeviceId со значением, установленным в интерфейсе.Условие в конфигураторе: DeviceID Percentile Позволят раздавать конфиг по значению DeviceId на определенный процент.Условие в конфигураторе: Interval DeviceID Percentile Позволят раздавать конфиг по значению DeviceId на определенный процент и в определенный день. |
AppVersion | Условие в конфигураторе: App Version Позволят сравнивать AppVersion со значением, установленным в интерфейсе. |
Environment | Условие в конфигураторе: App Environment Позволят сравнивать Environment со значением, установленным в интерфейсеEnvironment может принимать значения: Alpha , Beta , Release .Этот параметр удобно использовать для тестирования конфигурации на различных сборках приложения. |
AppBuild | Условие в конфигураторе: App Build Позволят сравнивать AppBuild со значением, установленным в интерфейсе. |
Инициализация в GDScript
Перед вызовом методов библиотеки необходимо создать объект клиента RuStoreGodotRemoteConfigClient
.
var _remoteConfig_client: RuStoreGodotRemoteConfigClient = null
func _ready():
_remoteConfig_client = RuStoreGodotRemoteConfigClient.get_instance()