Ви запустили мобільний застосунок, але конверсія падає, а аналітика не показує, де саме користувачі спотикаються. Sentry та Datadog фіксують помилки, але не дають відповіді на питання «чому» дотики не спрацювали. Ми підключаємо UXCam — сервіс запису сесій, теплових карт та аналізу жестів. За 1–2 дні інтегруємо SDK під ключ, налаштуємо маскування чутливих даних і тегування екранів, щоб ваша UX-команда бачила реальні сесії користувачів, відфільтровані за подіями та властивостями. Наш досвід — понад 50 успішних інтеграцій у iOS та Android проєктах, гарантія якості на всіх етапах. Економія часу аналізу — до 30% завдяки готовим воронкам і тепловим картам.
Чому UXCam, а не Sentry чи Hotjar?
UXCam спеціалізується на мобільних UX-дослідженнях. Ось ключові відмінності:
| Критерій | UXCam | Sentry | Hotjar |
|---|---|---|---|
| Фокус | Мобільні UX | Помилки та краші | Веб та десктоп |
| Запис жестів (тапи, скроли) | Так | Ні | Обмежено |
| Теплові карти | Тапи, жести, зони | Ні | Кліки (веб) |
| Маскування даних | Автоматичне + UI-теги | N/A | Поля введення |
| Фільтрація сесій | За подіями, властивостями | За помилками | За сторінками |
| API для подій | Нативне SDK | REST API | JavaScript |
На відміну від Sentry, UXCam записує відео сесії з жестами, що дозволяє побачити, де користувач зависає і що тапить даремно. Для мобільних проєктів це незамінний інструмент.
Встановлення та налаштування SDK
iOS (Swift Package Manager)
// 1. Підключення через SPM (Package.swift)
// .package(url: "https://github.com/uxcam/ios-sdk", from: "3.6.0")
// 2. Ініціалізація в AppDelegate
import UXCam
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
}
// 3. Маскування чутливих View
UXCam.occlude(view: cardNumberView, hideGestures: true)
// Сховає весь екран оплати
UXCam.tagScreenName("Payment", isOccluded: true)
// 4. Тегування екранів (в viewDidAppear)
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
UXCam.tagScreenName("Product Detail")
}
// 5. Кастомна подія
UXCam.logEvent("add_to_cart", withProperties: [
"product_id": product.id,
"category": product.category,
"price": product.price
])
// 6. Властивості користувача
UXCam.setUserProperty("plan", value: "premium")
// 7. Семплінг: записувати лише 30% сесій
// (встановити в config до старту)
config.userAppKey = "YOUR_APP_KEY" // для семплювання
// 8. Примусове завершення сесії
UXCam.stopSessionAndUploadData()
Android (Kotlin/Gradle)
// 1. Підключення через Gradle
// implementation("com.uxcam:uxcam:3.+")
// 2. Ініціалізація в Application.onCreate()
val config = UXCamConfiguration.Builder("YOUR_APP_KEY")
.enableAdvancedGestureRecognizers(true)
.build()
UXCam.startWithConfiguration(config)
// 3. Маскування View
UXCam.occludeSensitiveView(binding.cardNumberField)
// Весь екран оплати
UXCam.tagScreenName("Payment", isOccluded: true)
// 4. Тегування екрану (в Fragment.onResume())
override fun onResume() {
super.onResume()
UXCam.tagScreenName("Product Detail")
}
// 5. Кастомна подія
UXCam.logEvent("add_to_cart", mapOf(
"product_id" to product.id,
"category" to product.category,
"price" to product.price
))
// 6. Властивості користувача
UXCam.setUserProperty("plan", "premium")
// 7. Семплінг: запис 30% сесій (через config)
// (встановити до старту)
// 8. Завершення сесії
UXCam.stopSessionAndUploadData()
Маскування приватних даних
UXCam автоматично приховує поля з isSecureTextEntry (iOS) та типом password (Android). Для кастомних елементів використовуйте теги в XML або виклики в коді:
| Елемент | Метод маскування |
|---|---|
| Поле номера картки | UXCam.occludeSensitiveView() |
| Весь екран оплати | tagScreenName("Payment", isOccluded: true) |
| Поле введення коду | android:tag="uxcam_mask" в XML |
| Зображення з паспортом | UXCam.occlude(view: passportImage) |
Чому маскування даних критичне для відповідності вимогам?
App Store Review Guidelines (Section 5.1.4) та Google Play Політика конфіденційності вимагають, щоб застосунки не передавали чутливі дані без згоди. UXCam допомагає дотримуватися цих вимог: автоматичне приховування полів введення та можливість примусово occlude будь-який View. Якщо не налаштувати маскування, запис сесії може містити номери карток, паролі — це призведе до відхилення оновлення або юридичних наслідків. Ми в проєктах обов'язково додаємо маскування на всі екрани з персональними даними: оплата, реєстрація, профіль.
Як правильно тегувати екрани?
Автоматичні імена на зразок ViewController_3_Step2Fragment нечитабельні. Додавайте явні теги в viewDidAppear / onResume. Краще використовувати константні рядки: "Product Detail" замість "detail". Це дозволить будувати воронки та теплові карти за екранами в дашборді.
Кастомні події та властивості користувача
Події потрібні для відстеження бізнес-дій: add_to_cart, checkout_start, payment_failure. Властивості користувача (plan, registration_cohort) сегментують аудиторію — можна переглянути сесії лише premium-користувачів. Ми рекомендуємо додавати 10–15 ключових подій та 3–5 властивостей.
Семплінг та керування записом
Для застосунків з DAU > 10k варто обмежити відсоток записуваних сесій, щоб не перевищити ліміти по storage. Типова стратегія: 10% випадкових сесій + 100% сесій з цікавою для нас подією (наприклад, critical_error). У коді це реалізується через прапорець у конфігу та примусовий запуск запису при ключовій події.
Як налаштувати семплінг, щоб скоротити витрати на зберігання?
Налаштування семплінгу починається з вибору відсотка випадкових сесій (зазвичай 10-30%) та умов збереження. Приклад конфігурації для iOS: встановіть config.sessionRecordingChance = 0.1 та в обробнику події critical_error викличте UXCam.stopSessionAndUploadData(). Для Android використовуйте UXCam.setSessionRecordingProbability(0.1f). Додатково можна встановити максимальну кількість сесій на день. Ми допомагаємо підібрати оптимальні параметри під ваш трафік.
Приклад конфігурації семплінгу для iOS з пріоритетними подіями
// Конфігурація семплінгу: 10% випадкових сесій
let config = UXCamConfiguration(appKey: "YOUR_APP_KEY")
config.sessionRecordingChance = 0.1
UXCam.startWithConfiguration(config)
// Примусово зберігаємо сесію при настанні critical_error
// Викличте в обробнику помилки:
UXCam.stopSessionAndUploadData()
Що входить в роботу
- Підключення SDK на обидві платформи
- Налаштування маскування всіх чутливих екранів та полів
- Тегування всіх основних екранів зрозумілими іменами
- Встановлення 10+ ключових подій з параметрами
- Властивості користувача для сегментації
- Налаштування семплінгу під ваш трафік
- Документація з інтеграції та навчання команди
Строки та вартість
Базове підключення з маскуванням та тегуванням — від 1 дня. Повне налаштування з кастомними подіями та семплінгом — від 3 днів. Вартість розраховується індивідуально в залежності від складності та кількості платформ. Оцінимо ваш проєкт протягом 24 годин при зверненні.
Отримайте консультацію: напишіть нам, щоб обговорити інтеграцію UXCam у ваш застосунок. Ми гарантуємо якісний результат, підтверджений 5+ роками роботи та 50 реалізованими проєктами у сфері мобільних аналітик-сервісів. Замовте інтеграцію під ключ — ми зробимо все за 1-3 дні.







