Интеграция Varioqub UI SDK

Varioqub UI SDK позволяет добавлять интерактивные виджеты и управлять ими через эксперименты Varioqub.

Шаг 1. Подключение зависимостей

Для работы с виджетами необходимо подключить два модуля:

// Основной Varioqub SDK
implementation "com.yandex.varioqub:config:0.9.0"

// Модуль Varioqub UI для отображения виджетов
implementation "com.yandex.varioqub:ui:0.9.0"

Шаг 2. Подключение Varioqub SDK в приложение

Если у вас уже настроен Varioqub SDK, переходите к следующему шагу. Если нет, выполните базовую настройку:

  1. Создайте адаптер.

    Если вы уже используете Varioqub и у вас есть зависимость implementation "com.yandex.varioqub:appmetrica-adapter:0.9.0", используйте AppMetricaAdapter. В противном случае создайте нулевой адаптер.

  2. Импортируйте нужные функции и инициализируйте библиотеку.

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

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

    Рекомендации

    • При старте новой сессии вызывайте метод activateConfig(), чтобы получить значения сохраненных флагов.
    • Запускайте fetchConfig в фоне, чтобы выгрузить новые значения флагов с сервера и активировать их при старте следующей сессии.
    • Не рекомендуется вызывать метод activateConfig() в середине сессии — это может привести к неконсистентному поведению приложения.

Шаг 3. Подключение и настройка модуля Varioqub UI для работы с виджетами

Создание контейнера для виджета

Добавьте в макет интерфейса контейнер — например, FrameLayout, LinearLayout или ConstraintLayout, внутри которого будет размещаться виджет. Рекомендуется задавать размеры контейнера, соответствующие полному экрану (match_parent по ширине и высоте), чтобы обеспечить максимальную гибкость при позиционировании содержимого.

Пример:

<FrameLayout
    android:id="@+id/popupContainer"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

Настройка обработки диплинков

Настройте обработку диплинков в файле AndroidManifest.xml:

<intent-filter>
   <action android:name="android.intent.action.MAIN" />
   <category android:name="android.intent.category.LAUNCHER" />
   <action android:name="android.intent.action.VIEW" />
   <category android:name="android.intent.category.DEFAULT" />
   <category android:name="android.intent.category.BROWSABLE" />
   <data android:scheme="demoapp" android:host="deeplink" />
</intent-filter>

Важно

В данном примере используется схема demoapp и хост deeplink, поэтому фильтрацию проходят только диплинки вида demoapp://deeplink.... Для вашего приложения используйте свою схему и хост.

Обработка диплинков и запуск виджета

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

Пример кода:

import com.yandex.varioqub.ui.VarioqubUI

class MainActivity : AppCompatActivity() {
    // Пример кода внутри функций onCreate
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        
        // Обработка диплинка при создании активити
        intent.data?.let { uri ->
            VarioqubUI.applyWidgetFromDeeplink(
                "discount_widget", // название виджета из интерфейса Varioqub
                binding.popupContainer, // контейнер для виджета
                this,
                uri,
                "yadiscount", // префикс для параметров
                true // показывать логи
            )
        }
    }

    // Пример кода внутри функций onNewIntent
    override fun onNewIntent(intent: Intent) {
        super.onNewIntent(intent)
        
        // Обработка диплинка при получении нового intent
        intent.data?.let { uri ->
            VarioqubUI.applyWidgetFromDeeplink(
                "discount_widget",
                binding.popupContainer,
                this,
                uri,
                "yadiscount",
                true
            )
        }
    }
}
import com.yandex.varioqub.ui.VarioqubUI;

public class MainActivity extends AppCompatActivity {
    // Пример кода внутри функций onCreate
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        // Обработка диплинка при создании активити
        Uri uri = getIntent().getData();
        if (uri != null) {
            VarioqubUI.applyWidgetFromDeeplink(
                "discount_widget", // название виджета из интерфейса Varioqub
                binding.popupContainer, // контейнер для виджета
                this,
                uri,
                "yadiscount", // префикс для параметров
                true // показывать логи
            );
        }
    }
    // Пример кода внутри функций onNewInten
    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        
        // Обработка диплинка при получении нового intent
        Uri uri = intent.getData();
        if (uri != null) {
            VarioqubUI.applyWidgetFromDeeplink(
                "discount_widget",
                binding.popupContainer,
                this,
                uri,
                "yadiscount",
                true
            );
        }
    }
}