Интеграция 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, переходите к следующему шагу. Если нет, выполните базовую настройку:
-
Создайте адаптер.
Если вы уже используете Varioqub и у вас есть зависимость
implementation "com.yandex.varioqub:appmetrica-adapter:0.9.0", используйтеAppMetricaAdapter. В противном случае создайте нулевой адаптер. -
Рекомендации
- При старте новой сессии вызывайте метод
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
);
}
}
}