Интеграция UXCam для записи сессий мобильного приложения

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.
Разработка и поддержка любых видов мобильных приложений:
Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

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

Предлагаемые услуги
Показано 1 из 1 услугВсе 1735 услуг
Интеграция UXCam для записи сессий мобильного приложения
Простая
от 1 рабочего дня до 3 рабочих дней
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1054
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    445

Интеграция UXCam для записи сессий мобильного приложения

UXCam специализируется именно на мобильных UX-исследованиях — в отличие от Sentry или Datadog, здесь сессии записываются с акцентом на понимание поведения пользователя, а не диагностику ошибок. Тепловые карты жестов, фокусные зоны на экране, раздел Screen Flow — это инструменты для UX-команды и продакт-менеджера, а не инженера по надёжности.

Установка

iOS (Swift Package Manager):

// Package.swift
.package(url: "https://github.com/uxcam/ios-sdk", from: "3.6.0")
import UXCam

// AppDelegate
func application(_ application: UIApplication,
                 didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    let config = UXCamConfiguration(appKey: "YOUR_APP_KEY")
    config.enableAdvancedGestureRecognizers = true
    UXCam.startWithConfiguration(config)
    return true
}

Android:

// build.gradle
implementation("com.uxcam:uxcam:3.+")
// Application.onCreate()
val config = UXCamConfiguration.Builder("YOUR_APP_KEY")
    .enableAdvancedGestureRecognizers(true)
    .build()
UXCam.startWithConfiguration(config)

Маскировка приватных данных

UXCam по умолчанию маскирует поля с isSecureTextEntry (iOS) и поля типа password (Android). Для кастомных View с чувствительным содержимым:

// iOS — маскировать конкретный UIView
UXCam.occlude(view: cardNumberView, hideGestures: true)

// Маскировать весь экран
UXCam.occlude(view: self.view, hideGestures: false)
// Android — маскировать View
UXCam.occludeSensitiveView(binding.cardNumberField)

// Маскировать через XML
android:tag="uxcam_unmask" // исключить из маскировки
android:tag="uxcam_mask"   // принудительно маскировать

Для экранов оплаты рекомендую скрывать весь экран через UXCam.tagScreenName("Payment", isOccluded: true) — это проще, чем маскировать каждый элемент по отдельности.

Тегирование экранов

UXCam автоматически определяет имена экранов по имени класса ViewController/Activity. На практике имена классов вроде VC_3_Step2Fragment нечитаемы в дашборде. Добавляем явные теги:

// iOS — тег экрана
override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    UXCam.tagScreenName("Product Detail")
}
// Android — в Fragment.onResume()
override fun onResume() {
    super.onResume()
    UXCam.tagScreenName("Product Detail")
}

Кастомные события и свойства пользователя

// Событие
UXCam.logEvent("add_to_cart", withProperties: [
    "product_id": product.id,
    "category": product.category,
    "price": product.price
])

// Свойства пользователя (для сегментации в дашборде)
UXCam.setUserProperty("plan", value: "premium")
UXCam.setUserProperty("registration_cohort", value: "2024-Q1")

Свойства пользователя позволяют в UXCam дашборде фильтровать записи по сегменту: смотреть сессии только premium-пользователей или только новых.

Семплинг и управление записью

// Записывать только 30% сессий
let config = UXCamConfiguration(appKey: "YOUR_APP_KEY")
config.userAppKey = "YOUR_APP_KEY"

// Старт/стоп вручную
UXCam.stopSessionAndUploadData() // завершить и отправить текущую сессию

// Не записывать сессии в debug-сборке
if !isDebugBuild {
    UXCam.startWithConfiguration(config)
}

Для приложений с высокой DAU стоит подумать о семплировании: записывать 100% сессий дорого по storage в UXCam. Хорошая стратегия — 10% случайных + 100% сессий с ошибками или конкретными событиями:

// Принудительно записать сессию при критическом событии
UXCam.allowShortBreakForAnotherApp(true) // не завершать сессию при переключении
Analytics.shared.onCriticalError { error in
    UXCam.logEvent("critical_error", withProperties: ["error": error.localizedDescription])
    // Сессия будет помечена и доступна в дашборде
}

Что делаем

  • Подключаем SDK через SPM (iOS) или Gradle (Android)
  • Настраиваем маскировку чувствительных экранов и View
  • Расставляем tagScreenName для читаемых имён в дашборде
  • Добавляем ключевые события и свойства пользователя для сегментации
  • Настраиваем семплинг под объём трафика

Сроки

Базовое подключение с маскировкой и тегированием: 1–2 дня. Стоимость рассчитывается индивидуально.