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

# Интеграция Varioqub Unity

[Varioqub Unity](https://github.com/appmetrica/varioqub-unity-plugin) —  это плагин для игровой платформы [Unity3d](https://docs.unity3d.com/). Он включает поддержку Varioqub SDK для [Android](https://yandex.com/support/varioqub-app/ru/sdk/android/integration.md) и [iOS](https://yandex.com/support/varioqub-app/ru/sdk/ios/integration.md).

**Системные требования:**

- Unity 2018.3 и выше.
- [External Dependency Manager](https://github.com/googlesamples/unity-jar-resolver).

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

Ниже описаны этапы подключения и инициализации Varioqub Unity.

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

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

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

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

## Шаг 1. Подключите плагин Varioqub Unity {#integration}

{% list tabs %}

- OpenUPM

  Добавьте зависимости в [Packages/manifest.json](https://docs.unity3d.com/Manual/upm-manifestPrj.html):

  ```json
  {
    "scopedRegistries": [
      {
        "name": "package.openupm.com",
        "url": "https://package.openupm.com",
        "scopes": [
          "com.google.external-dependency-manager",
          "com.yandex.varioqub"
        ]
      }
    ],
    "dependencies": {
      "com.google.external-dependency-manager": "1.2.183",
      "com.yandex.varioqub": "https://github.com/appmetrica/varioqub-unity-plugin"
    }
  }
  ```

- UPM (GitHub)

  1. Подключите External Dependency Manager согласно [документации](https://github.com/googlesamples/unity-jar-resolver/tree/master?tab=readme-ov-file#getting-started).

  2. Добавьте плагин Varioqub Unity в зависимости в [Packages/manifest.json](https://docs.unity3d.com/Manual/upm-manifestPrj.html):

    ```json
    {
      "dependencies": {
        "com.yandex.varioqub": "https://github.com/appmetrica/varioqub-unity-plugin.git#vhttps://github.com/appmetrica/varioqub-unity-plugin"
      }
    }
     ```

{% endlist %}

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

Инициализируйте библиотеку Varioqub с помощью метода `initVarioqubWithAppMetricaAdapter()`:

```csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Com.Yandex.Varioqub;

public class VarioqubSDK : MonoBehaviour {
    IEnumerator RepeatFetch() {
        while (true) {
            Varioqub.Fetch(
                onSuccessDelegate: () => {
                    Debug.Log("Fetch succeeded!");
                },
                onErrorDelegate: error => {
                    Debug.Log($"Error: {error}!");
                }
            );
            yield return new WaitForSeconds(10f);
        }
    }

    void Awake() {
        var settings = new VarioqubSettings("appmetrica.1234567");
        settings.Logs = true;
        settings.ThrottleInterval = 2;
        settings.ClientFeatures = new Dictionary<string, string>(){
            {"isNight", "true"}
        };

        Varioqub.InitVarioqubWithAppMetricaAdapter(settings);
        Varioqub.ActivateConfig();

        StartCoroutine(RepeatFetch());
    }
}
```

Для инициализации библиотеки используется метод `initVarioqubWithAppMetricaAdapter(VarioqubSettings settings)`. В качестве параметров он принимает объект `VarioqubSettings`.

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

**Обязательные**

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

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

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

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

**Опциональные**

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

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

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

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

- `activateEvent` — отправка события при активации конфигурации флагов. По умолчанию отправка события включена.

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

Вы можете установить конфигурацию по умолчанию, чтобы ваше приложение использовало необходимые значения параметров до того, как оно подключится к серверу с удаленной конфигурацией. Для этого передайте список параметров с помощью метода `SetDefaults(IDictionary<string, object> defaults)`.

Вы можете скачать XML-файл конфигурации по умолчанию со страницы [Конфиг флагов](https://yandex.com/support/varioqub-app/ru/web/config.md#create).

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

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

```csharp
Varioqub.Fetch(
    onSuccessDelegate: () => {
        Debug.Log("Fetch succeeded!");
    },
    onErrorDelegate: error => {
        Debug.Log($"Error: {error}!");
    }
);
```

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

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

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

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

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

```csharp
Varioqub.ActivateConfig();
```

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

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

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

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

- `Varioqub.GetString(key, default)`.

Пример кода:

```csharp
Varioqub.GetString("key", "default_value");
```

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

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

```csharp
Varioqub.GetId();
```

{% note info %}

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

{% endnote %}

Подробнее о создании и проверке эксперимента читайте в разделе [Создание эксперимента](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 -->


