SDK Remote Config для Unity (версия 6.0.0)
Вы можете интегрировать SDK только в том случае, если используете движок на платформе Android. Если у вас движок на платформе iOS, SDK Remote Config работать не будет. Для работы с iOS используйте Swift.
SDK Remote Config – это облачный сервис, который позволяет изменять поведение и внешний вид вашего приложения, не требуя от пользователей загрузки обновления приложения. Плагин инкапсулирует в себе запрос конфигурации с сервера, кэширование, фоновое обновление. Имеет удобный интерфейс API для получения данных.
Пример реализации
Ознакомьтесь с приложением-примером, чтобы узнать, как правильно интегрировать SDK Remote Config.
Ключевые особенности
- Возможность указывать процент распространения конфигурации на аудиторию.
- Возможность передавать дополнительную информацию для построения воронки конкретной конфигурации. Формировать конфигурацию можно даже для конкретных пользователей.
- Набор callback, который можно использовать для аналитики.
- Минимальное количество внешних зависимостей.
Подключение в проект
Для подключения скачайте RuStore RemoteConfig SDK и импортируйте его в проект (Assets > Import Package > Custom Package). Зависимости подключаются автоматически с помощью External Dependency Manager (включен в SDK).
Если вы используете операционную систему macOS, измените настройки утилиты архивации. В настройках Archive Utility снимите флажок Keep expanding if possible. В противном случае архив проекта будет скачан некорректно.
Также вы можете склонировать код с помощью Git.
Для корректной обработки зависимостей SDK выполните следующие настройки.
-
Откройте настройки проекта: Edit > Project Settings > Player > Android Settings.
-
В pазделе Publishing Settings: включите следующие настройки.
- Custom Main Manifest.
- Custom Main Gradle Template.
- Custom Gradle Properties Template.
-
В разделе Other Settings настройте:
- package name.
- Minimum API Level = 24.
- Target API Level = 34.
-
Откройте настройки External Dependency Manager: Assets > External Dependency Manager > Android Resolver > Settings, включите следующие настройки.
- Use Jetifier.
- Patch mainTemplate.gradle.
- Patch gradleTemplate.properties.
-
Обновите зависимости проекта: Assets > External Dependency Manager > Android Resolver > Force Resolve.
Инициализация
Инициализация плагина
Для доступа к методам SDK из C# выполните инициализацию плагина, используя метод Init
.
IRemoteConfigClientEventListener eventListener = /* Реализация интерфейса */;
var settings = new RuStoreRemoteConfigClientSettings() {
appId = APP_ID,
account = ACCOUNT,
language = LANGUAGE
};
RuStoreRemoteConfigClient.Instance.Init(settings, eventListener);
Опциональные параметры инициализации
Установить опциональные параметры инициализации в C# можно через экземпляр класса RuStoreRemoteConfigClientSettings
.
namespace RuStore.RemoteConfig {
public class RuStoreRemoteConfigClientSettings {
public enum Environment {
Default,
Alpha,
Beta,
Release,
}
public string appId;
public string osVersion;
public string deviceModel;
public string language;
public string account;
public string deviceId;
public string appVersion;
public Environment environment = Environment.Default;
public string appBuild;
}
}
Параметр | Описание |
---|---|
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 со значением, установленным в интерфейсе. |
Через методы setAccount
и setLanguage
можно установить дополнительные параметры, которые могут быть использованы для получения конкретной конфигурации.
string ACCOUNT = "MyAccount";
string LANGUAGE = "ru";
RuStoreRemoteConfigClient.Instance.SetAccount(ACCOUNT);
RuStoreRemoteConfigClient.Instance.SetLanguage(LANGUAGE);
IRemoteConfigClientEventListener
Реализация RemoteConfigClientEventListener
дает возможность получать обратные вызовы (callback) о работе SDK, такие как завершение инициализации и обновление постоянного хранилища.
Объект реализующий интерфейс должен быть передан в методе инициализации плагина.
namespace RuStore.RemoteConfig {
public interface IRemoteConfigClientEventListener {
public void InitComplete();
public void RemoteConfigNetworkRequestFailure(RuStoreError error);
}
}
InitComplete
— вызывается при окончании инициализации.RemoteConfigNetworkRequestFailure
— вызывается при ошибке сетевого запроса Remote Config.
Получение конфигурации
Получение конфигурации происходит через вызов метода GetRemoteConfig
.
RuStoreRemoteConfigClient.Instance.GetRemoteConfig(
onSuccess: (response) => {
// Process success
},
onFailure: (error) => {
// Process error
});
-
Обратный вызов (callback)
Success
возвращает структуруRemoteConfig
с информацией от текущем наборе данных в параметреResponse
. -
Обратный вызов (callback)
Failure
возвращает структуруRuStoreError
с информацией об ошибке в параметреError
. Все ошибки описаны в разделе Возможные ошибки.
Класс RemoteConfig
Экземпляр RemoteConfig
– это текущий набор всех данных, полученных в зависимости от выбранной политики обновления при инициализации.
Объект содержит весь набор ключей, которые были переданы с сервера, в зависимости от параметров, указанных при инициализации. Для получения данных используются методы для извлечени и приведения к определенным типам.
namespace RuStore.RemoteConfig {
public abstract class RemoteConfig {
public abstract bool ContainsKey(string key);
public abstract bool GetBool(string key);
public abstract int GetInt(string key);
public abstract long GetLong(string key);
public abstract string GetString(string key);
public abstract double GetDouble(string key);
public abstract float GetFloat(string key);
}
}
Возможные ошибки
Если вы получили в ответ Failure
, не рекомендуется отображать ошибку пользователю. Отображение ошибки может негативно повлиять на пользовательский опыт.
namespace RuStore {
public class RuStoreError {
public string name;
public string description;
}
}
name
— название ошибки. Содержит имяsimpleName
класса ошибки.description
— сообщение ошибки.
Ошибка | Описание |
---|---|
BackgroundConfigUpdateError | Появляется при ошибке в работе фоновой синхронизации. |
FailedToReceiveRemoteConfig | Появляется в случае ошибки при вызове метода получения конфигурации. |
RemoteConfigCastException | Появляется в случае некорректного получения данных по ключу из класса RemoteConfig . Ошибка может быть связана с невозможностью приведения к типу, либо значение по передаваемому ключу отсутствует. |
RemoteConfigClientAlreadyExist | Появляется в случае повторного создания RemoteConfigClient в рамках жизни процесса. |
RemoteConfigClientNotCreated | Появляется в случае доступа к RemoteConfigClient через статическое поле instance до создания RemoteConfigClient . |
RemoteConfigCommonException | Общая непредвиденная ошибка. |
RemoteConfigNetworkException | Появляется при сетевой ошибке. |