Перейти к основному содержимому

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 выполните следующие настройки:

  1. Откройте настройки проекта: Edit > Project Settings > Player > Android Settings.

  2. В pазделе Publishing Settings: включите настройки:

    • Custom Main Manifest.
    • Custom Main Gradle Template.
    • Custom Gradle Properties Template.
  3. В разделе Other Settings: настройте:

    • package name.
    • Minimum API Level = 24.
    • Target API Level = 34.
  4. Откройте настройки External Dependency Manager: Assets > External Dependency Manager > Android Resolver > Settings, включите настройки:

    • Use Jetifier.
    • Patch mainTemplate.gradle.
    • Patch gradleTemplate.properties.
  5. Обновите зависимости проекта: Assets > External Dependency Manager > Android Resolver > Force Resolve.

Инициализация

Инициализация плагина

Для доступа к методам SDK из C# выполните инициализацию плагина, используя метод Init.

Вызов метода Init
IRemoteConfigClientEventListener eventListener = /* Реализация интерфейса */;

var settings = new RuStoreRemoteConfigClientSettings() {
appId = APP_ID,
account = ACCOUNT,
language = LANGUAGE
};

RuStoreRemoteConfigClient.Instance.Init(settings, eventListener);

Опциональные параметры инициализации

Установить опциональные параметры инициализации в C# можно через экземпляр класса RuStoreRemoteConfigClientSettings.

Класс 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 можно установить дополнительные параметры, которые могут быть использованы для получения конкретной конфигурации.

Вызов методов SetAccount и SetLanguage в C#
string ACCOUNT = "MyAccount";
string LANGUAGE = "ru";

RuStoreRemoteConfigClient.Instance.SetAccount(ACCOUNT);
RuStoreRemoteConfigClient.Instance.SetLanguage(LANGUAGE);

IRemoteConfigClientEventListener

Реализация RemoteConfigClientEventListener дает возможность получать callback о работе SDK, такие как завершение инициализации и обновление постоянного хранилища.

Объект реализующий интерфейс должен быть передан в методе инициализации плагина.

Интерфейс IRemoteConfigClientEventListener
namespace RuStore.RemoteConfig {

public interface IRemoteConfigClientEventListener {

public void InitComplete();
public void RemoteConfigNetworkRequestFailure(RuStoreError error);
}
}
  • InitComplete — вызывается при окончании инициализации.
  • RemoteConfigNetworkRequestFailure — вызывается при ошибке сетевого запроса Remote Config.

Получение конфигурации

Получение конфигурации происходит через вызов метода GetRemoteConfig.

Вызов метода GetRemoteConfig
RuStoreRemoteConfigClient.Instance.GetRemoteConfig(
onSuccess: (response) => {
// Process success
},
onFailure: (error) => {
// Process error
});
  • Обратный вызов (callback) Success возвращает структуру RemoteConfig с информацией от текущем наборе данных в параметре Response.

  • Обратный вызов (callback) Failure возвращает структуру RuStoreError с информацией об ошибке в параметре Error. Все ошибки описаны в разделе Возможные ошибки.

Класс RemoteConfig

Экземпляр 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, не рекомендуется отображать ошибку пользователю. Отображение ошибки может негативно повлиять на пользовательский опыт.

Класс RuStoreError
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Появляется при сетевой ошибке.