Flutter 4.3.0
Важно: в процессе внедрения или обновления SDK используйте последнюю версию из таблицы Changelog.
Оглавление:
- 1 Сhangelog
- 2 Руководство по настройке и интеграции библиотеки в проект Flutter
- 3 Версии
- 4 Что стоит знать:
- 5 Установка
- 6 Использование
- 6.1 1. iOS
- 6.2 2. Android
- 6.3 2.1. Java
- 6.4 2.2. Kotlin
- 6.5 2.3. Настройка styles
- 6.6 3. Конфигурирование библиотеки
- 6.7 4. Настройка дизайна форм
- 6.8 5. Запуск форм (Events)
- 6.9 Запуск кампании
- 6.10 Остановка кампании
- 6.11 5.1. Показ формы с дополнительными атрибутами
- 6.12 6. Отслеживание событий
- 6.13 7. Отправка дополнительных параметров (Properties)
- 6.14 8. Отладка приложения
Сhangelog
Версия SDK | Дата | Изменения |
1.0.3 | 09.2022 | Исходная версия |
2.0.0 | 11.2023 | Обновлены нативные версии библиотек |
2.0.1 | 11.2023 | Исправлена ошибка при вызове |
2.1.1 | 02.2024 | Обновлены нативные версии библиотек Обновлена минимальная версия для iOS - 12 |
2.8.1 | 10.2024 | Обновлены нативные версии библиотек Android compileSDK 34 Замените устаревший вызов |
2.8.2 | 12.2024 | Исправлен баг со стороны библиотеки |
2.9.4 | 03.2024 | Обновите зависимость до последней версии. iOS - Новый блок в опросах - звезды ⭐️ |
2.9.5 | 21.04.2025 | Обновлен AGP |
3.0.5 | 22.10.2025 | iOS - |
3.0.6 | 3.11.2025 | Android: исправлена ошибка при добавлении изображения из галереи. |
4.2.1 | 17.03.2026 | iOS - |
4.3.0 | 13.05.2026 | Функция Обновлены нативные версии библиотек Android 4.3.1 |
Руководство по настройке и интеграции библиотеки в проект Flutter
Управление формами производится в личном кабинете UX Feedback в который можно зайти по ссылке
В личном кабинете можно создавать, редактировать и запускать формы двух типов:
Slide-in - форма появляется внизу экрана
PopUp - форма появляется по центру экрана
Версии
Flutter UX Feedback использует нативные версии sdk
Актуальная версия библиотеки для iOS - 4.3.2
Актуальная версия библиотеки для Android - 4.3.1
Что стоит знать:
Для prod и test версий приложения используются разные App_ID (подробнее ниже).
Для запуска форм используются события, которые отправляются со стороны приложения. В личном кабинете можно настраивать показ форм через N секунд или N раз, после отправления Event. Также есть настройка “Показывать каждый раз” при отправлении Event.
Для настройки дизайна форм, необходимо попросить дизайнера прописать стили
Установка
Добавьте зависимость в файл pubspec.yaml в вашем проекте:
dependencies:
ux_feedback: 4.3.0Установите плагин, выполнив в терминале приведенную ниже команду:
$ flutter pub getИспользование
import 'package:ux_feedback/ux_feedback.dart';
final _uxFeedback = UxFeedback();
_uxFeedback.setup(appID: 'App_ID');Для Android необходимы дополнительные настройки
1. iOS
Для поддержки функции добавления изображений из галереи в опрос необходимо в файле info.plist добавить строку конфигурации запроса разрешения, если эта строка отсутствовала:
<key>NSPhotoLibraryUsageDescription</key>
<string>Добавление изображений к форме</string>2. Android
Перейдите в файл /android/build.gradle и добавьте репозиторий maven в allprojects:
allprojects {
repositories {
...
maven { url "https://nexus.uxfeedback.ru/repository/android-sdk-new/" }
}
}Далее перейдите в файл /android/app/build.gradle и добавьте зависимость UXFeedback в depencies:
dependencies {
...
// ... other project dependencies
implementation 'ru.uxfeedback:sdk:4.3.1'
}Для работы SDK необходимо добавить следующие разрешения.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
2.1. Java
android/src/.../MainApplication.java
import ru.uxfeedback.sdk.UxFeedbackWrapperЗатем проинициализируйте библиотеку в onCreate:
@Override
public void onCreate() {
super.onCreate();
// Получить App_ID можно в панели управления UX Feedback
UxFeedbackWrapper.setup(this, "App_ID", null);
}2.2. Kotlin
android/src/.../MyApplication.kt
import ru.uxfeedback.sdk.UxFeedbackWrapperЗатем проинициализируйте библиотеку в onCreate:
class MyApplication : FlutterApplication() {
override fun onCreate() {
super.onCreate()
// Получить App_ID можно в панели управления UX Feedback
UxFeedbackWrapper.setup(this.application, "App_ID", null);
}
}android/app/build.gradle
defaultConfig {
//....
manifestPlaceholders = [
applicationName: ".MyApplication"
]
}
2.3. Настройка styles
Для работы SDK необходимо использовать тему Theme.AppCompat
В файле android/app/src/main/res/values/styles.xml родительская тема должна быть Theme.AppCompat
Пример
<style name="LaunchTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowBackground">@drawable/launch_background</item>
</style>
<style name="NormalTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowBackground">?android:colorBackground</item>
</style>Так же необходимо сделать во всех файлах стилей используемых в вашем приложении, например android/app/src/main/res/values-night/styles.xmlиспользовать тему Theme.AppCompat.DayNight.NoActionBar
В android/app/src/main/AndroidManifest.xml необходимо указать theme для activity и meta-data
<activity
...
android:theme="@style/LaunchTheme">
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
</activity>3. Конфигурирование библиотеки
Для того чтобы задавать нужные параметры работы библиотеки используйте метод setSettings:
_uxFeedback.setSettings(
UXFeedbackSettings(
globalDelayTimer: 1800, // Время показа между кампаниями.
slideInUiBlocked: false, // Блокировка прочего ui пока показывается модальное окно фидбека.
debugEnabled: false, // Включение режима логирования.
socketTimeout: 5, // Время ожидания при установлении соединения SDK к серверу UXFeedback в секундах.
retryTimeout: 300, // Время ожидания ответа сервера UXFeedback при успешном соединении в секундах.
retryCount: 3, // Количество повторных попыток отправки данных в штуках.
fieldsEventEnabled: false, // Отслеживания информации о значениях заполняемых полей.
closeOnSwipe: false, // Только для iOS закрыть или свернуть форму при смахивании (swipe) вниз.
slideInUiBlackout: UXFslideInUiBlackout( // Настройки фона при показе формы в режиме slideIn.
color: Colors.black, // Цвет фона в
opacity: 100, // Прозрачность от 0 до 100
blur: 10, // Размытие от 0 до 100
),
popupUiBlackout: UXFpopupUiBlackout( // Настройки фона при показе формы в режиме popUp
color: Colors.black, // Цвет фона в
opacity: 100, // Прозрачность от 0 до 100
blur: 10, // Размытие от 0 до 100
),
),
);4. Настройка дизайна форм
Для изменения дизайна формы необходимо передать объект типа UXFTheme в метод setTheme:
_uxFeedback.setTheme(UXFTheme(
text03Color: Color(0xFF8B90A0),
inputBorderColor: Color(0xFFD3D4D8),
iconColor: Color(0xFFB5B8C2),
btnBgColorActive: Color(0xFF1983C8),
btnBorderRadius: 4,
errorColorSecondary: Color(0xFFF4A0A3),
errorColorPrimary: Color(0xFFE84047),
mainColor: Color(0xFF0076C2),
controlBgColorActive: Color(0xFFDBF1FF),
formBorderRadius: 8,
inputBgColor: Color(0xFFF3F3F3),
text01Color: Color(0xFF232735),
controlBgColor: Color(0xFFF3F3F3),
controlIconColor: Color(0xFFFFFFFF),
btnBgColor: Color(0xFF0076C2),
text02Color: Color(0xFF505565),
btnTextColor: Color(0xFFFFFFFF),
bgColor: Color(0xFFFFFFFF),
fontH1: UXFFont(size: 22),
fontH2: UXFFont(size: 17),
fontP1: UXFFont(size: 17),
fontP2: UXFFont(size: 14),
fontBtn: UXFFont(size: 16),
));Параметры цветов необходимо взять из файла, который сформируют дизайнеры по ссылке: Гайды по стилям
5. Запуск форм (Events)
Запуск кампании
В необходимом месте приложения вы можете стартовать кампанию вызвав метод startCampaign:
// Допустимые символы для названия события event_name: “Aa-Zz, 0-9, _”. Рекомендуем не использовать пробелы.
_uxFeedback.startCampaign(event: 'event_name')Остановка кампании
В необходимом месте приложения вы можете остановить кампанию вызвав метод stopCampaign:
_uxFeedback.stopCampaign();Если кампания не была показана - ее показ отменится, если была показана - будет закрыта.
5.1. Показ формы с дополнительными атрибутами
При показе формы существует также возможность таргетироватся на дополнительные атрибуты которые задаются в личном кабинете. При использовании SDK необходимо создать экземпляр класса UXFBAttributesBuilder, используя соответствующие методы добавить в него значения атрибутов, после чего вызвать метод build()
_uxFeedback.startCampaign(
event: "event",
attributes: [
UXFeedbackAttribute("stringValue", "value"),
UXFeedbackAttribute("intValue", 1),
UXFeedbackAttribute("doubleValue", 36.6),
UXFeedbackAttribute("booleanValue", true),
UXFeedbackAttribute("dateValue", DateTime.now()),
],
)6. Отслеживание событий
При необходимости есть возможность отслеживать события как показ кампании пользователю или когда кампания пройдена/скрыта:
_uxFeedback.setCampaignListener(
onCampaignLoaded: (bool success) {
print('onCampaignLoaded $success');
},
onCampaignReceiveError: (String message) {
print('onCampaignReceiveError $message');
}
onCampaignShow: (int campaignId, String eventName) {
print('onCampaignShow: $eventName');
},
onCampaignFinish: (int campaignId, String eventName) {
print('onCampaignFinish: $eventName');
},
onCampaignEventSend: (int campaignId) {
print('onCampaignEventSend: $campaignId');
},
onCampaignTerminate: (int campaignId, String eventName, int terminatedPage, int totalPages) {
print('onCampaignTerminate: $eventName, $terminatedPage, $totalPages');
},
onCampaignAnswered: (int campaignId, String fieldValues) {
print('onCampaignAnswered: $campaignId, $fieldValues');
}
);Так же есть возможность использовать сообщения, генерируемые SDK. Например, с целью отладки или записи в общий журнал приложения.
Для этого в пользовательском приложении следует вызывать следующий метод:
_uxFeedback.setLogListener(
onLogReceive: (String message) {
print('onLogReceive $message');
},
);7. Отправка дополнительных параметров (Properties)
При необходимости есть возможность отправить дополнительные данные, вместе с ответом, например User_id, Email, Регион или любые другие. Для этого вызовите функцию setParameters:
_uxFeedback.setProperties(
{
'userId': 21,
'email': '.....',
// ...
}
);8. Отладка приложения
Для того чтобы включить режим debug вам нужно указать в настройке библиотеки debugEnabled: true
_uxFeedback.setSettings(
UXFeedbackSettings(debugEnabled: true)
);