---
metadata:
  - name: generator
    content: Diplodoc Platform v5.55.3
alternate:
  - https://yandex.com/support/varioqub-app/en/sdk/android/integration.md
  - https://yandex.com/support/varioqub-app/ru/sdk/android/integration.md
  - href: https://yandex.com/support/varioqub-app/ru/sdk/android/integration.md
    type: text/markdown
    title: Markdown version
  - href: https://yandex.com/support/varioqub-app/ru/llms.txt
    type: text/markdown
    title: llms.txt
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.com/support/varioqub-app/ru/llms.txt

# Интеграция SDK

Для работы Varioqub SDK подключите и инициализируйте библиотеку AppMetrica для Android. Подробнее о том, как это можно сделать, читайте в [документации AppMetrica SDK](https://appmetrica.yandex.ru/docs/ru/sdk/android/analytics/quick-start).

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

- 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_:

{% list tabs %}

- build.gradle.kts

  ```kotlin
  dependencies {
      implementation("com.yandex.varioqub:config:0.7.0")
      implementation("com.yandex.varioqub:appmetrica-adapter:0.7.0")
      implementation("io.appmetrica.analytics:analytics:7.10.0")
  }
  ```

- build.gradle

  ```groovy
  dependencies {
      implementation 'com.yandex.varioqub:config:0.7.0'
      implementation 'com.yandex.varioqub:appmetrica-adapter:0.7.0'
      implementation 'io.appmetrica.analytics:analytics:7.10.0'
  }
  ```

{% endlist %}

## Шаг 2. Инициализируйте библиотеку {#shag-2-inicializirujte-biblioteku}

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

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

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

    <!-- source: ru/sdk/_includes/application-id.md -->
    {% note tip %}

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

    {% endnote %}
    <!-- endsource: ru/sdk/_includes/application-id.md -->

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

- `adapter: VarioqubConfigAdapter`. Адаптер для сбора и передачи статистики в аналитическую систему, например, в AppMetrica. Если вы не хотите собирать статистику, используйте [нулевой адаптер](https://yandex.com/support/varioqub-app/ru/sdk/android/nullconnect.md).

- `context: Context`.

{% list tabs %}

- Kotlin

  ```kotlin
  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)
      }
  }
  ```

- Java

  ```java
  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);
      }
  }
  ```

{% endlist %}

### Настройки VarioqubSettings

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

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

    <!-- source: ru/sdk/_includes/application-id.md -->
    {% note tip %}

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

    {% endnote %}
    <!-- endsource: ru/sdk/_includes/application-id.md -->

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

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

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

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

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

{% list tabs %}

- Kotlin

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

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

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

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

- Java

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

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

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

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

{% endlist %}

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

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

1. Скачайте XML-файл конфигурации со страницы [Конфиг флагов](https://yandex.com/support/varioqub-app/ru/web/config.md#create) и сохраните его в каталоге `res/xml` вашего приложения.

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

    {% list tabs %}

    - Kotlin

      ```kotlin
      Varioqub.setDefaults(R.xml.ab_defaults)
      ```

    - Java

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

    {% endlist %}

    {% note info "Примечание" %}

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

    {% endnote %}

## Шаг 4. Запустите обновление конфигурации флагов в фоне {#shag-4-zapustite-obnovlenie-konfiguracii-flagov-v-fone}

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

{% note info "Примечание" %}

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

{% endnote %}

{% list tabs %}

- Kotlin

  ```kotlin
  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")
      }
  })
  ```

- Java

  ```java
  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);
      }
  });
  ```

{% endlist %}

## Шаг 5. Активируйте конфигурацию {#shag-5-aktivirujte-konfiguraciyu}

<!-- source: ru/sdk/_includes/config-note.md -->
{% note tip %}

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

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

{% endnote %}
<!-- endsource: ru/sdk/_includes/config-note.md -->

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

{% list tabs %}

- Kotlin

  ```kotlin
  Varioqub.activateConfig()
  ```

- Java

  ```java
  Varioqub.activateConfig();
  ```

{% endlist %}

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

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

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

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

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

 <!-- - `Varioqub.getDouble(key, default)`; -->
 <!-- - `Varioqub.getLong(key, default)`; -->
- `Varioqub.getString(key, default)`.
 <!-- - `Varioqub.getBoolean(key, default)`.-->

Пример кода:

{% list tabs %}

- Kotlin

  ```kotlin
  val flag = Varioqub.getString("flag", "defaultValue")
  Log.i("VARIOQUB", flag)
  ```

- Java

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

{% endlist %}

## Получение ID устройства для проверки эксперимента {#get-id}

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

{% list tabs %}

- Kotlin

  ```kotlin
  Log.i("VARIOQUB", Varioqub.getId())
  ```

- Java

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

{% endlist %}

<!-- source: ru/sdk/_includes/getid-empty.md -->
{% note info %}

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

{% endnote %}
<!-- endsource: ru/sdk/_includes/getid-empty.md -->

Подробнее о создании и проверке эксперимента читайте в разделе [Создание эксперимента](https://yandex.com/support/varioqub-app/ru/web/create.md).


<!-- source: ru/_includes/neuroexpert.md -->
<hr>

Задайте вопрос Нейроэксперту — в правом нижнем углу нажмите ![](../../_images/neuro.png =150x).
<!-- endsource: ru/_includes/neuroexpert.md -->


