Интеграция SDK

Требования к приложению:

  • Android, версия 5 и выше.

  • Android Studio 2021 или выше.

  • Убедитесь, что в файле сборки вашего приложения используются следующие значения:

    • minSdkVersion 21 или выше;
    • compileSdkVersion 31 или выше.

Общие рекомендации при интеграции

  1. При старте новой сессии вызывайте метод activateConfig(), чтобы получить значения сохраненных флагов.

  2. Запускайте fetchConfig в фоне, чтобы выгрузить новые значения флагов с сервера и активировать их при старте следующей сессии.

  3. Не рекомендуется вызывать метод activateConfig() в середине сессии — это может привести к неконсистентному поведению приложения.

Шаг 1. Добавьте библиотеку в проект

Чтобы подключить Varioqub SDK добавьте следующие зависимости в Gradle файл на уровне модуля вашего приложения, обычно app/build.gradle.kts или app/build.gradle:

dependencies {
    implementation("com.yandex.varioqub:config:0.7.0")
    implementation("com.yandex.varioqub:appmetrica-adapter:0.7.0")
    implementation("com.yandex.android:mobmetricalib:5.3.0")
}
dependencies {
    implementation 'com.yandex.varioqub:config:0.7.0'
    implementation 'com.yandex.varioqub:appmetrica-adapter:0.7.0'
    implementation 'com.yandex.android:mobmetricalib:5.3.0'
}

Шаг 2. Инициализируйте библиотеку

Для инициализации библиотеки используется метод init(settings: VarioqubSettings, adapter: VarioqubConfigAdapter, context: Context). В качестве параметров он принимает:

  • settings: VarioqubSettings. Содержит обязательные и опциональные настройки.

    В настройках укажите идентификатор своего проекта в формате appmetrica.XXXXXX, где XXXXXX — идентификатор приложения из интерфейса AppMetrica (например, VarioqubSettings.Builder("appmetrica.1234567")).

    Совет

    ID приложения можно получить на странице Настройки AppMetrica: скопируйте его из Общие настройкиID приложения.

    Дополнительно можно передать список пользовательских параметров в withClientFeature. Например, признак того, что пользователь подписан на рассылки.

  • adapter: VarioqubConfigAdapter. Адаптер для сбора и передачи статистики в аналитическую систему, например, в AppMetrica. Если вы не хотите собирать статистику, используйте нулевой адаптер.

  • context: Context.

import com.yandex.varioqub.appmetricaadapter.AppMetricaAdapter
import com.yandex.varioqub.config.FetchError
import com.yandex.varioqub.config.OnFetchCompleteListener
import com.yandex.varioqub.config.Varioqub
import com.yandex.varioqub.config.VarioqubSettings

class YourApplication : Application() {
    override fun onCreate() {
        super.onCreate()

        val settings = VarioqubSettings.Builder("appmetrica.1234567")
            .withClientFeature("my_cool_feature", "true")
            .build()

        Varioqub.init(settings, AppMetricaAdapter(this), this)
    }
}
import com.yandex.varioqub.appmetricaadapter.AppMetricaAdapter;
import com.yandex.varioqub.config.FetchError;
import com.yandex.varioqub.config.OnFetchCompleteListener;
import com.yandex.varioqub.config.Varioqub;
import com.yandex.varioqub.config.VarioqubSettings;

public class YourApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();

        VarioqubSettings settings = new VarioqubSettings.Builder("appmetrica.1234567")
            .withClientFeature("my_cool_feature", "true")
            .build();

        Varioqub.init(settings, new AppMetricaAdapter(this), this);
    }
}

Настройки VarioqubSettings

Содержит обязательные и опциональные настройки:

  • VarioqubSettings.Builder("client_id") — конструктор с идентификатором проекта в формате appmetrica.XXXXXX, где XXXXXX — идентификатор приложения из интерфейса AppMetrica (например, VarioqubSettings.Builder("appmetrica.1234567")).

    Совет

    ID приложения можно получить на странице Настройки AppMetrica: скопируйте его из Общие настройкиID приложения.

  • withClientFeature("myCoolFeature", "LovelyFeatureValue") — функция со списком пользовательских параметров. Например, признак того, что пользователь подписан на рассылки.

  • .withThrottleInterval(2000) — ограничение частоты обновления конфига в миллисекундах. Рекомендуется использовать только для тестирования.

  • withUrl(url: String) — изменение URL для ответов сервера. Используется только для тестов.

  • withLogs() — включение внутреннего логирования. При обращении в поддержку лучше сначала включить логирование и отправить лог с описанием проблемы.

  • withActivateEvent(enabled: Boolean) — отправка события при активации конфигурации флагов. По умолчанию отправка события включена.

Один пользовательский параметр

val settings = VarioqubSettings.Builder("appmetrica.1234567")
    .withClientFeature("my_cool_feature", "true")
    .withThrottleInterval(2000)
    .build()

Несколько пользовательских параметров

val settings = VarioqubSettings.Builder("appmetrica.1234567")
    .withClientFeature("my_cool_feature", "true")
    .withClientFeature("my_best_feature", "false")
    .withClientFeature("mode", "night")
    .withThrottleInterval(2000)
    .build()

Один пользовательский параметр

VarioqubSettings settings = new VarioqubSettings.Builder("appmetrica.1234567")
    .withClientFeature("my_cool_feature", "true")
    .withThrottleInterval(2000)
    .build();

Несколько пользовательских параметров

VarioqubSettings settings = new VarioqubSettings.Builder("appmetrica.1234567")
    .withClientFeature("my_cool_feature", "true")
    .withClientFeature("my_best_feature", "false")
    .withClientFeature("mode", "night")
    .withThrottleInterval(2000)
    .build();

Шаг 3. Задайте конфигурацию по умолчанию с помощью XML файла

Вы можете установить конфигурацию по умолчанию чтобы ваше приложение использовало необходимые значения параметров до того, как оно подключится к серверу с удаленной конфигурацией.

  1. Скачайте XML файл конфигурации со страницы Конфиг флагов и сохраните его в каталоге res/xml вашего приложения.

  2. Передайте загруженный XML файл конфигурации с помощью метода setDefaults(int).

    Varioqub.setDefaults(R.xml.ab_defaults)
    
    Varioqub.setDefaults(R.xml.ab_defaults);
    

    Примечание

    Название файла ab_defaults.xml является демонстрационным.

Шаг 4. Запустите обновление конфигурации флагов в фоне

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

Примечание

Не забудьте активировать конфигурацию через activateConfig() после получения самой свежей версии.

Varioqub.fetchConfig(object : OnFetchCompleteListener {
    override fun onSuccess() {
        Log.i("VARIOQUB", "FETCH SUCCESS")

        // идентификатор устройства (ID) можно использовать при проверке эксперимента
        // для этого нужно указать его в соответствующем поле в A/B эксперименты
        Log.i("VARIOQUB", Varioqub.getId())
    }
    override fun onError(message: String, error: FetchError) {
        Log.i("VARIOQUB", "FETCH ERROR: $message")
    }
})
Varioqub.fetchConfig(new OnFetchCompleteListener() {
    @Override
    public void onSuccess() {
        Log.i("VARIOQUB", "FETCH SUCCESS");

        // идентификатор устройства (ID) можно использовать при проверке эксперимента
        // для этого нужно указать его в соответствующем поле в A/B эксперименты
        Log.i("VARIOQUB", Varioqub.getId());
    }
    @Override
    public void onError(String message, FetchError error) {
        Log.i("VARIOQUB", "FETCH ERROR: " + message);
    }
});

Шаг 5. Активируйте конфигурацию

Совет

Основной сценарий использования:

Переодически скачивайте конфигурацию и активируйте ее при запуске приложения. Это гарантирует, что флаги не поменяются во время пользовательской сессии. Рекомендуется запускать активацию как можно раньше.

Активируйте конфигурацию с помощью метода activateConfig().

Varioqub.activateConfig()
Varioqub.activateConfig();

Используйте метод activateConfig() каждый раз, когда необходимо активировать полученную/загруженную конфигурацию (например, при старте новой сессии).

Получение флагов из интерфейса

Значения флагов вычисляются и предоставляются в следующем порядке:

  1. Флаг есть в эксперименте.
  2. Флаг есть в загруженной конфигурации.
  3. Флаг есть в конфигурации по умолчанию.

Методы для получения флагов:

  • Varioqub.getString(key, default).

Пример кода:

val flag = Varioqub.getString("flag", "defaultValue")
Log.i("VARIOQUB", flag)
String flag = Varioqub.getString("flag", "defaultValue");
Log.i("VARIOQUB", flag);

Получение ID устройства для проверки эксперимента

Для получения ID устройства используйте метод Varioqub.getId():

Log.i("VARIOQUB", Varioqub.getId())
Log.i("VARIOQUB", Varioqub.getId());

Примечание

До первого успешного вызова fetchConfig метод Varioqub.getId() может возвращать пустой ответ.

Подробнее о создании и проверке эксперимента читайте в разделе Создание эксперимента.

Предыдущая