IOS
!Добавление SDK UserX
Инициализация
Настройка записи экранов
Регистрация экранов
Отправка ID пользователя
Дополнительные атрибуты пользователей
Определение клавиатуры
Перехват ошибок
Отправка событий
Cкрытие персональных данных
Запись при скролле
Получение ссылки на сессию
Изменение качества видеозаписи
Android
Добавление SDK UserX
Инициализация
Настройка записи экранов
Регистрация экранов
Отправка ID пользователя
Дополнительные атрибуты пользователей
Определение клавиатуры
Перехват ошибок
Отправка событий
Cкрытие персональных данных
Cкрытие персональных данных в Jetpaсk Compose
Отключение записи во время скролла (Jetpaсk Compose)
Запись WebView
Отрисовка GoogleMaps
Отрисовка Yandex MapKit
Запись при скролле
Получение ссылки на сессию
Изменение качества видеозаписи
Unity IOS
new!Добавление плагина UserX
Инициализация
Отправка ID пользователя
Настройка записи экранов
Отправка событий
Регистрация экранов
Unity Android
new!Добавление плагина UserX
Инициализация
Отправка ID пользователя
Определение клавиатуры
Перехват ошибок
Отправка событий
Регистрация экранов
Настройка записи экранов
Запись при скролле
Xamarin IOS
new!Добавление UserX
Инициализация
Отправка ID пользователя
Настройка записи экранов
Отправка событий
Перехват ошибок
Flutter
new!Добавление плагина UserX
Инициализация
Отправка ID пользователя
Отправка событий
Регистрация экранов
Настройка записи экранов
Включение перехвата крашей
Получение ссылки на сессию
React Native
Добавление SDK UserX
Инициализация
Отправка ID пользователя
Регистрация экранов
Отправка событий
Cкрытие персональных данных
Получение ссылки на сессию
Сторонние сервисы
Slack
Crashlytics
Google Analytics
AppsFlyer
FAQ
Добавление SDK UserX
Инструкция по интеграции через Swift Package Manager (для Xcode 12+):
В меню Xcode выбрать: File -> Swift Packages -> Add Package Dependency...
В открывшемся окне указать ссылку на репозиторий UserXKit: https://github.com/UserXMetrica/UserX/ Нажать Далее
На следующем шаге подтвердить текущую актуальную версию UserXKit, нажав Далее
В итоговом окне подтвердить добавление UserXKit в выбранный таргет, нажав Финиш
Установка SDK с помощью Cocoapods
Добавьте pod 'UserX' к соответствующему объекту в вашем подфайле и запустите pod install.
pod 'UserX', '2.8.0'
Перед интеграцией рекомендуем обновить версию cocoapods командой:
pod update
Ручная установка SDK:
Скачайте последнюю версию UserX SDK для IOS проекта.
Распакуйте файл и перетащите UserX.framework
в секцию "Embedded Binaries" на вкладке "General" в вашем проекте XCode.
Инструкция по интеграции в проекты на Objective-C:
В "Build settings" вашего проекта установите флаг "Always Embed Swift Standard Libraries" в "YES".
Интеграция через Carthage
Добавьте в Cartfile соответствующую инструкцию:
binary "https://raw.githubusercontent.com/UserXMetrica/UserX/master/UserX.json"
В терминале по адресу папки проекта выполните команду:
carthage update UserX --platform iOS
Затем добавьте UserX.framework в свой проект.
Инициализация
В UserX предусмотрено 3 режима работы. Для каждого из них - разные методы инициализации (указаны ниже).
Используйте только один метод инициализации.
По умолчанию вам доступен только автоматический режим работы. Остальные режимы доступны только на индивидуальных тарифах.
В AppDelegate
вашего приложения добавьте:
import UserXKit
Режим 1 (основной): автоматический
В метод application:didFinishLaunchingWithOptions
добавьте строку:
UserX.start("YOUR_API_KEY")
Режим 2: ручной режим работы SDK
В метод application:didFinishLaunchingWithOptions
добавьте строку:
UserX.configure(YOUR_API_KEY")
В ручном режиме сессия и все ее события начнут записываться только после вызова метода начала сессии. Запись закончится после вызова метода остановки записи, либо после сворачивания приложения пользователем.
// оба эти метода работают только после ручной инициализации UserX
UserX.startSession(); // start recording
UserX.stopSession(); // stop recording
Режим 3: режим работы с ручным управлением отправки сессии
В метод application:didFinishLaunchingWithOptions
добавьте строку:
UserX.start("YOUR_API_KEY", uploadIfMarked: true)
В этом режиме сессия будет записываться также как и в автоматическом, но отправлена на сервер она будет только если в время сессии был вызван метод:
UserX.markSessionToUpload();
UserX автоматически прекращает запись видео при низком уровне свободной оперативной памяти на устройсте. Вы можете отключить эту функцию вызвав метод ниже до вызова UserX.start:
UserX.ignoreLowMemory = true // default is false (edited)
Запишите первую сессию
После интеграции SDK:
- Запустите приложение с интегрированным UserX.
- Совершите несколько действий в приложении, перейдите по экранам.
- Сверните приложение, нажав кнопку «домой». Не выгружайте приложение из памяти устройства.
- Через 30-60 секунд обновите страницу личного кабинета, должна появиться ваша тестовая сессия. Интерфейс личного кабинета обновится.
- Перейдите во вкладку "Видео сессии" и посмотрите видеозапись вашей сессии.
ПРИМЕЧАНИЕ: до отправки на сервер, данные сохраняются в каталог .cachesDirectory в отдельную папку UserXAnalytics. Если вы после завершения приложения очищаете данный каталог, то данные сессий могут теряться (не отправляться на сервер). В таком случае добавьте папку UserXAnalytics в исключения (чтобы данные в ней не удалялись).
Настройка записи экранов
По умолчанию запись видео стартует с момента запуска приложения.
Чтобы это изменить (чтобы видео не записывалось со старта), необходимо сразу после старта приложения вызвать:
UserX.stopScreenRecording() // stop video recording
Далее, в момент, когда открывается экран, на которому нужно вести запись вам необходимо вызвать:
UserX.startScreenRecording() // start video recording
При открытии Экранов приложения, которые Нельзя записывать, необходимо вызывать:
UserX.stopScreenRecording() // stop video recording
Регистрация экранов
Для корректной работы тепловых карт SDK UserX должно регистрировать все экраны в приложении. В нативных приложениях регистрация экранов осуществляется автоматически.
Чтобы в этом убедиться, после интеграции SDK необходимо:
- пройти в приложении по всем экранам;
- свернуть приложение;
- проверить как данные отобразились в консоли UserX в разделе Тепловые карты.
Некоторые экраны могут не распознаться, в таком случае их необходимо регистрировать вручную.
Ручная регистрация экранов:
В некоторых случаях может потребоваться дополнительная ручная разметка экранов, Для этого необходимо при открытии экрана вызвать:
UserX.startScreen(named "Screen name")
В случае, если экраны в приложении работают в WebView , то такие экраны не регистрируются автоматически и их необходимо будет разметить (вызывать указанный выше метод при переходе между разными экранами внутри webview).
Отправка ID пользователя
Вы можете настроить передачу в UserX вашего внутреннего ID пользователя. Это позволит вам находить сессии конкретных пользователей вашего приложения (например, после обращения пользователя в поддержку, можно посмотреть его видеозапись, на которой будет видно, что он делал перед обращением в поддержку).
Для этого выполните:
UserX.userId = "YOUR_INTERNAL_USER_ID"
Для получения идентификатора пользователя, сгенерированного в UserX, вызовите метод
UserX.userIndex // String?
Дополнительные атрибуты пользователей
Помимо UserID
вы можете также передавать дополнительные атрибуты пользователей. Например, идентификаторы пользователей из других систем аналитики, город регистрации и тп.
В дальнейшем вы сможете искать пользователей по таким атрибутам.
Используйте следующий код:
UserX.applyUserAttributes(
.key(<name: String>, value: <value: Bool>),
.key(<name: String>, value: <value: Int64>),
.key(<name: String>, value: <value: Double>),
.key(<name: String>, value: <value: String>),
.counter(<name: String>, value: <value: Int64>),
)
UserX.applyUserAttributes(
. increasedCounter(<name: String>, by: <value: Int64>),
)
UserX.applyUserAttributes(
. decreasedCounter(<name: String>, by: <value: Int64>),
)
Определение клавиатуры
Вы можете разрешить или запретить вывод клавиатуры с помощью параметра (отключение снижает нагрузку):
UserX.isKeyboardRenderingEnabled // default = false
Перехват ошибок
Для запрета сбора crash-логов выполните:
UserX.catchExceptions true / false // default = false
Отправка событий
Вы можете отправлять в UserX информацию о совершении пользователями ключевых действий (например, «Выполнен перевод»). Это позволит находить сессии пользователей, которые выполнили/не выполнили эти действия и анализировать причины их поведения.
Для отправки событий воспользуйтесь любым из следующих методов:
UserX.addEvent("Name")
UserX.addEvent(_ name: String, with parameters: [String: Any]? = nil)
Cкрытие персональных данных
Настройте скрытие персональных данных пользователя
.UIKit Для скрытия любого элемента интерфейса (содержание которого не должно отображаться в сессии), отметьте такие поля:
view.isSensitive = true
SwiftUI Для скрытия элементов интерфейса необходимо использовать метод:
YourSensitiveView()
.uxSensitive()
Для скрытия (true) / раскрытия полей (false) можно использовать метод:
YourSensitiveView()
.uxSensitive(true|false)
Например, у вас есть список полей, какие-то из них вы не хотите скрывать. В таком случае, вы можете передать через переменную, а ее значение менять у себя в зависимости от условий
YourSensitiveView()
.uxSensitive(flagToHideView)
Запись при скролле
Запись видео во время скрола
По умолчанию UserX не записывает видео во время прокрутки элементов на экране. Вы можете включить запись вызвав метод ниже, но это может снизить производительность.
UserX.isScrollRenderingEnabled = true // default = false
Получение ссылки на сессию
Каждый раз при старте приложения SDK UserX формирует ссылки:
- на данную сессию;
- на все сессии устройства.
Вы можете забрать к себе данные и ссылки и использовать их для прямого перехода к просмотру видеозаписей из ваших внутренних или сторонних систем.*|
*для просмотра видеозаписей по ссылке вы должны быть авторизованы в консоле UserX,в противном случае при переходе по ссылке вы попадете на страницу авторизации.
Чтобы получить ссылку на текущую сессию:
UserX.sessionUrl
Чтобы получить ссылку на все сессии устройства:
UserX.externalAnalyticsUrl
Изменение качества видеозаписи
UserX.videoQuality = .medium // значение по умолчанию
Возможные значения:
UserX.videoQuality = .high
UserX.videoQuality = .medium
UserX.videoQuality = .low
* Если необходимо изменить качество записи для всех экранов, то нужно вызвать при запуске приложения.
Добавление SDK UserX
Ручная установка SDK:
Скачайте последнюю версию UserX SDK для Android проекта.
Распакуйте скачанный файл.
Откройте свой проект в Android Studio.
Добавьте новый модуль File -> New -> New Module
- выберите Import .JAR/.AAR Package
, где указываем путь к скачанному userx.aar
.
Проверяем что в settings.gradle
добавилась библиотека: include ..., ':userx'
Добавьте в build.gradle
вашего проекта в раздел dependencies:
для нативных приложений:
implementation project(":UserX-4.2.4")
Импорт библиотеки из репозитория:
Добавьте в build.gradle
уровня приложения в раздел repositories
для нативных приложений:
maven { url 'https://github.com/userxpro/userx/raw/maven/' }
Добавьте в build.gradle
вашего проекта в раздел dependencies
для нативных приложений:
implementation "pro.userx:UserX:4.2.4@aar"
если вы используете Jetpaсk Compose:
implementation project("pro.userx:UserX:4.2.13.compose@aar")
Инициализация
В UserX предусмотрено 3 режима работы. Для каждого из них - разные методы инициализации (указаны ниже).
Используйте только один метод инициализации.
По умолчанию вам доступен только автоматический режим работы. Остальные режимы доступны только на индивидуальных тарифах.
Режим 1 (основной): автоматический
Активация UserX происходит вызовом следующего кода (необходимо вызвать один раз, мы настоятельно рекомендуем инициализировать UserX в переопределенном классе Application в методе onCreate):
UserX.init("YOUR_API_KEY");
Режим 2: ручной режим работы SDK
UserX.manualMode("YOUR_API_KEY");
В ручном режиме сессия и все ее события начнут записываться только после вызова метода начала сессии. Запись закончится после вызова метода остановки записи, либо после сворачивания приложения пользователем.
// оба эти метода работают только после ручной инициализации UserX
UserX.startSession(); // start recording
UserX.stopSession(); // stop recording
Режим 3: режим работы с ручным управлением отправки сессии
UserX.init(String apiKey, boolean uploadIfMarked); // если uploadIfMarked = true - то включается режим ручного управления отправки сессии
В этом режиме сессия будет записываться также как и в автоматическом, но отправлена на сервер она будет только если в время сессии был вызван метод:
UserX.markSessionToUpload();
Запишите первую сессию
После интеграции SDK:
- Запустите приложение с интегрированным UserX.
- Совершите несколько действий в приложении, перейдите по экранам.
- Сверните приложение, нажав кнопку «домой». Не выгружайте приложение из памяти устройства.
- Через 30-60 секунд обновите страницу личного кабинета, должна появиться ваша тестовая сессия. Интерфейс личного кабинета обновится.
- Перейдите во вкладку "Видео сессии" и посмотрите видеозапись вашей сессии.
Настройка записи экранов
По умолчанию запись видео стартует с момента запуска приложения.
Чтобы это изменить (чтобы видео не записывалось со старта) , необходимо сразу после старта приложения вызвать:
UserX.stopScreenRecording(); // stop video recording
Далее, в момент, когда открывается экран, на которому нужно вести запись вам необходимо вызвать:
UserX.startScreenRecording(); // start video recording
При открытии Экранов приложения, которые Нельзя записывать, необходимо вызывать:
UserX.stopScreenRecording(); // stop video recording
Регистрация экранов
Если вам не нужны какие-либо экраны для просмотра в UserFlows - вы сможете их скрыть.
В нативных приложениях (XML регистрация экранов осуществляется автоматически. Чтобы в этом убедиться, после интеграции SDK необходимо:
- пройти в приложении по всем экранам;
- свернуть приложение;
- проверить, как данные отобразились в консоли UserX в разделе Тепловые карты.
Должны распознаться все экраны.
Если вы используете ProGuard возможно некорректное распознавание классов. Чтобы это исправить, добавьте:
-keep class * extends android.app.Fragment
-keep class * extends androidx.fragment.app.Fragment
-keep class * extends android.support.v4.app.Fragment
Ручная регистрация экранов: В некоторых случаях может потребоваться дополнительная ручная разметка экранов. Для этого необходимо при открытии экрана вызывать:
/**
* @param title - screen title
*/
UserX.addScreenName(String title)
В случае если экраны в приложении работают в WebView, то такие экраны не регистрируются автоматически и их необходимо будет разметить (вызывать указанный выше метод при переходе между разными экранами внутри webview)
При необходимости вы также можете отключить автоматическую регистрацию Фрагментов и Модальных окон в приложении:
UserX.setAutodetectFragments(false); // default - true
UserX.setAutodetectDialogsAndMenus(false); // default - false
Отправка ID пользователя
Вы можете настроить передачу вашего внутреннего ID пользователя в UserX. Это нужно для использования фильтров по User ID, а также для принудительного отслеживания определенных пользователей или запрета на отслеживание.
UserX.setUserId("YOUR_INTERNAL_USER_ID");
Дополнительные атрибуты пользователей
Вы можете передать свои собственные атрибуты пользователя, например имя, фамилию, возраст. Затем вы сможете искать пользователей по атрибутам. Значения атрибутов пользователей перезаписываются, но вы сможете найти пользователя по его предыдущему значению атрибута. Предусмотрены 2 типа атрибутов - простой и счетчик. Простой атрибут может быть строкой, числом или boolean. По простому атрибуту возможен поиск по полному совпадению. Для атрибута типа счетчик имеется возможность установить значение, уменьшить или увеличить. Поиск пользователей можно вести по полному совпадению значения счетчика либо по больше/меньше.
Для установки пользовательских атрибутов воспользуйтесь следующим методом:
UserX.applyUserAttributes(Attribute... attributes);
// Simple attribute:
Attribute.stringAttribute(String name).set(String value);
Attribute.numberAttribute(String name).set(long value);
Attribute.numberAttribute(String name).set(double value);
Attribute.booleanAttribute(String name).set(boolean value);
// Counter attribute:
Attribute.counterAttribute(String name).set(long value); // set counter value
Attribute.counterAttribute(String name).increment(); // increment by 1
Attribute.counterAttribute(String name).increment(long delta); // increment by delta
Attribute.counterAttribute(String name).decrement(); // decrement by 1
Attribute.counterAttribute(String name).decrement(long delta); // decrement by delta
Примеры использования:
// example 1 - set attributes after user registration
UserX.applyUserAttributes(
Attribute.stringAttribute("phone number").set("8800000900"),
Attribute.stringAttribute("first name").set("Ivan"),
Attribute.numberAttribute("age").set(45),
Attribute.booleanAttribute("vip account").set(true),
Attribute.counterAttribute("friends count").set(0)
);
// example 2 - user wrote a message in the chat
UserX.applyUserAttributes(
Attribute.counterAttribute("messages written").increment()
);
// example 3 - user made a purchase
UserX.applyUserAttributes(
Attribute.counterAttribute("purchases").increment(),
Attribute.counterAttribute("spent money").increment(3650)
);
Определение клавиатуры
Вы можете разрешить или запретить вывод клавиатуры с помощью параметра (отключение снижает нагрузку):
UserX.setKeyboardRenderingEnabled(boolean isKeyboardRenderingEnabled) // default - true
Перехват ошибок
Включение/выключение перехвата ошибок (по умолчанию включено, при интеграции с Crashlytics должно быть включено)
UserX.setCatchExceptions(boolean catchExceptions)
Отправка событий
Отправка произвольных событий. Вы можете отправлять произвольные события вашей сессии, по этим событиям вы сможете искать сессии. Для отправки событий воспользуйтесь следующими методами:
Для отправки событий воспользуйтесь любым из следующих методов:
UserX.addEvent(String firstArg);
UserX.addEvent(String firstArg, String attributeName, String attributeValue);
UserX.addEvent(String name, HashMap attributes);
Cкрытие персональных данных
Для скрытия любого элемента интерфейса, содержание которого не должно отображаться в сессии
UserX.addSensitiveView(view); // hide
UserX.removeSensitiveView(view); // unhide
Также вы можете запретить запись кликов:
UserX.setCatchUserTaps(boolean catchUserTaps)
Начиная с Android 8 UserX записывает контент с видео плейеров. Если вам необходимо отключить запись видео с плейеров - вызовите UserX.addSensitiveView(view) - в этом случае окно с плейером будет скрыто от записи, включая все эелементы управления воспроизведением видео. Если же вам необходимо скрыть видео и оставить возможность отслеживания элементов управления, размещенных поверх плейера - на экране, где выводится плейер вызовите:
UserX.useOldRenderer(true)
и после выхода с этого экрана:
UserX.useOldRenderer(false)
Cкрытие персональных данных в Jetpaсk Compose
Разметьте элементы, которые нельзя записывать:
val view = LocalView.current
Text(
text = "Hidden Text Here",
textAlign = TextAlign.Center,
fontSize = 20.sp,
fontWeight = FontWeight.Bold,
modifier = Modifier
.onGloballyPositioned { coordinates ->
UserX.markComposeHiddenView("id-1", coordinates)
}
)
// здесь id-1 это произвольный уникальный id вью, можно просто рандомный гуид
Скрываемая область отображена синим цветом по умолчанию. Вы можете задать свой собственный цвет для скрываемой области, используя следующий метод:
UserX.setFillColor(android.graphics.Color.GRAY)
Отключение записи во время скролла (Jetpaсk Compose)
Для отключения снятия скриншотов во время скролла используйте:
UserX.setComposeScrollRenderingEnabled(false)
Если требуется снова включить снятие скриншотов при скролле:
UserX.setComposeScrollRenderingEnabled(true) // по умолчанию true
Запись WebView
UserX записывает весь контент с WebView. Если на страницах, отображаемых в WebView, имеются поля, которые необходимо скрыть от записи - вызовите:
UserX.setWebView(WebView webView);
Автоматически будут скрыты элементы "input", "textarea", "button" и элементы с классом "userx-mask". Если вы хотите скрыть другие элементы, вызовите:
UserX.setWebView(WebView webView, String... selectorsToHide);
в selectorsToHide перечислите все CSS селекторы, которые вы хотите скрыть от записи.
Также вы можете указать все CSS селекторы, которые необходимо скрыть от записи во всех регистрируемых WebView вызвав метод:
UserX.setGlobalWebViewCssSelectorsToHide(String... selectorsToHide);
Отрисовка GoogleMaps
Вы можете разрешить UserX выполнять рендеринг GoogleMap (снижает производительность при работе с картой). Для этого воспользуйтесь одним из методов:
/**
* @param mapContainerId MapFragment layout id
* @param googleMap GoogleMap
*/
UserX.setGoogleMap(int mapContainerId, com.google.android.gms.maps.GoogleMap googleMap);
/**
* @param mapContainerId MapFragment layout id
* @param googleMap GoogleMap
* @param googleMapSnapshotPeriod milliseconds, default = 1000ms
*/
UserX.setGoogleMap(int mapContainerId, com.google.android.gms.maps.GoogleMap googleMap, long googleMapSnapshotPeriod);
Отрисовка Yandex MapKit
Для отрисовки Yandex карты необходимо в XML файл вашего макета в элемент com.yandex.mapkit.mapview.MapView добавить yandex:movable="true". И также вызвать в коде:
UserX.setYandexMap(Object yandexMapView)
Запись при скролле
Если в вашем приложении при использовании UserX наблюдаются проблемы производительности при прокрутке списков, вызовите этот метод сразу после инициализации UserX:
UserX.setScrollRenderingEnabled(false);
Код для получения ссылки на текущую сессию:
UserX.getSessionUrl();
Код для получения ссылки на все сессии этого устройства:
UserX.getExternalAnalyticsUrl();
Получение ссылки на сессию
Каждый раз при старте приложения SDK UserX формирует ссылки:
- на данную сессию;
- на все сессии устройства.
Вы можете забрать к себе данные и ссылки и использовать их для прямого перехода к просмотру видеозаписей из ваших внутренних или сторонних систем.*|
*для просмотра видеозаписей по ссылке вы должны быть авторизованы в консоле UserX,в противном случае при переходе по ссылке вы попадете на страницу авторизации.
Чтобы получить ссылку на текущую сессию:
UserX.sessionUrl();
Чтобы получить ссылку на все сессии устройства:
UserX.externalAnalyticsUrl();
Изменение качества видеозаписи
UserX.setMediumVideoQuality(); // значение по умолчанию
Возможные значения:
UserX.setHighVideoQuality();
UserX.setMediumVideoQuality();
UserX.setLowVideoQuality();
* Если необходимо изменить качество записи для всех экранов, то нужно вызвать при запуске приложения.
Добавление плагина UserX
Загрузите
последнюю версию плагина UserX для проекта Unity.
Распакуйте загруженный файл.
Добавьте UserXPlugin в Assets
Инициализация
В коде, вызываемом при старте приложения, выполните:
UserXKitExtension.Init("API_KEY");
Запишите первую сессию
После интеграции SDK:
- Запустите приложение с интегрированным UserX.
- Совершите несколько действий в приложении, перейдите по экранам.
- Сверните приложение, нажав кнопку «домой».
Отправка ID пользователя
Вы можете настроить передачу в UserX вашего внутреннего ID пользователя. Это позволит вам находить сессии конкретных пользователей вашего приложения (например, после обращения пользователя в поддержку, можно посмотреть его видеозапись, на которой будет видно, что он делал перед обращением в поддержку).
UserXKitExtension.SetUserId("YOUR_INTERNAL_USER_ID");
Настройка записи экранов
UserXKitExtension.StartRecording(); // start video recording
UserXKitExtension.StopRecording(); // stop video recording
Вызовите метод startScreenRecord, чтобы запустить запись видео в ручном режиме. Автоматическая запись видео также будет действовать, в соответствии с выбранными настройками записи. Чтобы остановить запись видео, вызовите метод stopScreenRecord. Запись видео в любом случае будет остановлена при сворачивании приложения.
Отправка событий
console.docs.integration.ios.13
UserXKitExtension.AddEvent("YOUR_EVENT");
Регистрация экранов
UserX автоматически регистрирует все экраны вашего приложения, включая модальные окна.
Если у вас есть собственная реализация экранов, которую не распознает наша библиотека UserX - вы можете использовать один из этих методов для ручной регистрации экранов (вызывать в момент начала показа экрана):
UserXKitExtension.StartScreen("SCREEN_NAME");
UserXKitExtension.StartScreen("SCREEN_NAME", "PARENT_SCREEN_NAME");
Добавление плагина UserX
Загрузите Unity Android Plugin
В Unity Editor выполните: Assets / Import Package / Custom Package... и выберите загруженный файл.
Инициализация
В коде, вызываемом при старте приложения, выполните:
UserXUnityAndroid.UserX.init("API_KEY");
Запишите первую сессию
После интеграции SDK:
- Запустите приложение с интегрированным UserX.
- Совершите несколько действий в приложении, перейдите по экранам.
- Сверните приложение, нажав кнопку «домой».
Отправка ID пользователя
Чтобы разделять видео от разных пользователей, можно использовать параметр userId,
который устанавливается вызовом следующего метода:
UserXUnityAndroid.UserX.setUserId("YOUR_INTERNAL_USER_ID");
Определение клавиатуры
Вы можете разрешить или запретить вывод клавиатуры с помощью параметра (отключение снижает нагрузку):
UserXUnityAndroid.UserX.setKeyboardRenderingEnabled(boolean isKeyboardRenderingEnabled) // default - true
Перехват ошибок
Включение/выключение перехвата ошибок (по умолчанию включено, при интеграции с Crashlytics должно быть включено)
UserX.setCatchExceptions(boolean catchExceptions)
Отправка событий
Отправка произвольных событий. Вы можете отправлять произвольные события вашей сессии, по этим событиям вы сможете искать сессии. Для отправки событий воспользуйтесь следующими методами:
UserXUnityAndroid.UserX.addEvent(String firstArg);
UserXUnityAndroid.UserX.addEvent(String name, Dictionary attributes);
Регистрация экранов
Если вам необходимо зарегистрировать экран с собственным именем или при необходимых вам условиях используйте метод:
UserXUnityAndroid.UserX.addScreenName(String title)
Настройка записи экранов
UserXUnityAndroid.UserX.startScreenRecording(); // start video recording
UserXUnityAndroid.UserX.stopScreenRecording(); // stop video recording
Вызовите метод startScreenRecord, чтобы запустить запись видео в ручном режиме. Автоматическая запись видео также будет действовать, в соответствии с выбранными настройками записи. Чтобы остановить запись видео, вызовите метод stopScreenRecord. Запись видео в любом случае будет остановлена при сворачивании приложения.
Запись при скролле
Если в вашем приложении при использовании UserX наблюдаются проблемы производительности при прокрутке списков, вызовите этот метод сразу после инициализации UserX:
UserXUnityAndroid.UserX.setScrollRenderingEnabled(false);
Добавление UserX
Загрузите
последнюю версию плагина UserX для проекта Xamarin IOS.
Распакуйте загруженный файл.
Добавьте UserX в свой проект:
Depedencies -> Add reference -> .Net Assembly -> Browse -> UserX.dll
Инициализация
В AppDelegate.cs в методе FinishedLaunching:
using UserXBinding;
UserX.Start("USERX_KEY");
Запишите первую сессию
После интеграции SDK:
- Запустите приложение с интегрированным UserX.
- Совершите несколько действий в приложении, перейдите по экранам.
- Сверните приложение, нажав кнопку «домой».
Отправка ID пользователя
Вы можете настроить передачу в UserX вашего внутреннего ID пользователя. Это позволит вам находить сессии конкретных пользователей вашего приложения (например, после обращения пользователя в поддержку, можно посмотреть его видеозапись, на которой будет видно, что он делал перед обращением в поддержку).
UserX.UserId = "YOUR_INTERNAL_USER_ID";
Настройка записи экранов
UserX.StartScreenRecording(); // start video recording
UserX.StopScreenRecording(); // stop video recording
Вызовите метод startScreenRecord, чтобы запустить запись видео в ручном режиме. Автоматическая запись видео также будет действовать, в соответствии с выбранными настройками записи. Чтобы остановить запись видео, вызовите метод stopScreenRecord. Запись видео в любом случае будет остановлена при сворачивании приложения.
Отправка событий
console.docs.integration.ios.13
UserX.AddEvent("YOUR_EVENT", null);
Перехват ошибок
Чтобы включить сбор crash логов:
UserX.CatchExceptions = true;
Добавление плагина UserX
Добавьте зависимость в ваш pubspec.yaml
dependencies:
userx_flutter: ^1.3.0
Импортируйте в свой код Dart (main.dart):
import 'package:userx_flutter/userx_flutter.dart';
Инициализация
В UserX предусмотрено 3 режима работы. Для каждого из них - разные методы инициализации (указаны ниже).
Используйте только один метод инициализации.
По умолчанию вам доступен только автоматический режим работы. Остальные режимы доступны только на индивидуальных тарифах.
Режим 1 (основной): автоматический
Инициализируйте UserX в main.dart:
@override
void initState() {
super.initState();
UserX.start("YOUR_API_KEY");
}
Режим 2: ручной режим работы SDK*
*ручной режим работы SDK сейчас доступен только на iOS
Инициализируйте UserX в main.dart:
@override
void initState() {
super.initState();
UserX.configure("YOUR_API_KEY");
}
В ручном режиме сессия и все ее события начнут записываться только после вызова метода начала сессии. Запись закончится после вызова метода остановки записи, либо после сворачивания приложения пользователем.
// оба эти метода работают только после ручной инициализации UserX
UserX.startSession(); // start recording
UserX.stopSession(); // stop recording
Режим 3: режим работы с ручным управлением отправки сессии
В main.dart добавьте строку:
UserX.start("YOUR_API_KEY", uploadIfMarked: true)
В этом режиме сессия будет записываться также как и в автоматическом, но отправлена на сервер она будет только если в время сессии был вызван метод:
UserX.markSessionToUpload();
Запишите первую сессию
После интеграции SDK:
- Запустите приложение с интегрированным UserX.
- Совершите несколько действий в приложении, перейдите по экранам.
- Сверните приложение, нажав кнопку «домой».
Отправка ID пользователя
Вы можете настроить передачу в UserX вашего внутреннего ID пользователя. Это позволит вам находить сессии конкретных пользователей вашего приложения (например, после обращения пользователя в поддержку, можно посмотреть его видеозапись, на которой будет видно, что он делал перед обращением в поддержку).
UserX.setUserId("USER_ID");
Отправка событий
console.docs.integration.ios.13
UserX.addEvent("EVENT_NAME", {"EVENT_PARAM" : "PARAM_VALUE"});
Регистрация экранов
Чтобы на Flutter работали тепловые карты экранов и фильтры/воронки по экранам, необходимо настроить регистрацию экранов в приложении.
Для этого, каждый раз, когда открывается новый экран в приложении, необходимо вызывать:
UserX.addScreenName(String title)
Настройка записи экранов
UserX.stopScreenRecording();
UserX.startScreenRecording();
Вызовите метод startScreenRecord, чтобы запустить запись видео в ручном режиме. Автоматическая запись видео также будет действовать, в соответствии с выбранными настройками записи. Чтобы остановить запись видео, вызовите метод stopScreenRecord. Запись видео в любом случае будет остановлена при сворачивании приложения.
Включение перехвата крашей
let enabled = true; // true|false
UserX.setCatchExceptions(enabled);
необходимо обязательно выполнить (в папке проекта ios)
pod update
Получение ссылки на сессию
Каждый раз при старте приложения SDK UserX формирует ссылки:
- на данную сессию;
- на все сессии устройства.
Вы можете забрать к себе данные и ссылки и использовать их для прямого перехода к просмотру видеозаписей из ваших внутренних или сторонних систем.*
*для просмотра видеозаписей по ссылке вы должны быть авторизованы в консоле UserX
Чтобы получить ссылку на текущую сессию:
Future <String?> UserX.sessionUrl
Чтобы получить ссылку на все сессии устройства:
Future <String?> UserX.allSessionsUrl
Добавление SDK UserX
Android
В директории вашего проекта выполните:
yarn add react-native-userx
react-native link react-native-userx
В папке Android вашего проекта в файле build.gradle в секцию allprojects repositories добавьте:
maven { url 'https://github.com/userxpro/userx/raw/maven/' }
Должно получиться примерно так:
...
allprojects {
repositories {
mavenLocal()
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url("$rootDir/../node_modules/react-native/android")
}
maven {
// Android JSC is installed from npm
url("$rootDir/../node_modules/jsc-android/dist")
}
google()
jcenter()
maven { url 'https://www.jitpack.io' }
maven { url 'https://github.com/userxpro/userx/raw/maven/' }
}
}
IOS
Теперь работает автолинковка. Если ранее пытались интегрировать и линковали вручную, то надо предварительно выполнить разлинковку:
react-native unlink react-native-userx
Далее интеграция следующими инструкциями, выполняемыми из директории проекта:
yarn add react-native-userx
cd ios && pod install && cd ..
Инициализация
В вашем App.js добавьте код:
let UserX = require('react-native-userx');
UserX.start('YOUR_API_KEY');
Запишите первую сессию
После интеграции SDK:
- Запустите приложение с интегрированным UserX.
- Совершите несколько действий в приложении, перейдите по экранам.
- Сверните приложение, нажав кнопку «домой».
Отправка ID пользователя
Вы можете настроить передачу вашего внутреннего ID пользователя в UserX. Это нужно для использования фильтров по User ID, а также для принудительного отслеживания определенных пользователей или запрета на отслеживание.
UserX.setUserId(userId)
Для того, чтобы получить заданный ранее User ID, вызовите:
UserX.getUserId()
Регистрация экранов
Для корректной работы тепловых карт SDK должно регистрировать все экраны в приложении.
Для проверки регистрации экранов, после интеграции SDK, необходимо:
- пройти в приложении по всем экранам;
- свернуть приложение;
- проверить, как данные отобразились в консоли UserX в разделе Тепловые карты.
Ручная регистрация экранов:
В некоторых случаях может потребоваться дополнительная ручная разметка экранов. Для этого необходимо при открытии экрана вызвать:
UserX.addScreenName(name)
Отправка событий
Отправка произвольных событий. Вы можете отправлять произвольные события вашей сессии, по этим событиям вы сможете искать сессии. Для отправки событий воспользуйтесь следующими методами:
UserX.addEvent('Your Event Name');
UserX.addEvent('Your Event Name', associativeArrayWithParameters) ;
Cкрытие персональных данных
Для скрытия любого элемента интерфейса, содержание которого не должно отображаться в сессии
<View ref={ x => UserX.hideSensitiveView(x) } />
Получение ссылки на сессию
Каждый раз при старте приложения SDK UserX формирует ссылки:
- на данную сессию;
- на все сессии устройства.
Вы можете забрать к себе данные и ссылки и использовать их для прямого перехода к просмотру видеозаписей из ваших внутренних или сторонних систем.*|
*для просмотра видеозаписей по ссылке вы должны быть авторизованы в консоле UserX,в противном случае при переходе по ссылке вы попадете на страницу авторизации.
Чтобы получить ссылку на текущую сессию:
UserX.getSessionUrl()
Чтобы получить ссылку на все сессии устройства:
UserX.getAllSessionsUrl()
Интеграция со сторонними сервисами
UserX позволяет интегрироваться с известными сервисами аналитики для более лучшего анализа ваших приложений и поведений пользователей.
Slack
Подключите Slack и UserX будет отправлять в ваш канал уведомления о событиях и отчеты.
Войдите в свой аккаунт для подключенияAppMetrica
Загружайте свои отчеты из AppMetrica прямо в UserX для получения ссылок на видео-сессии.
Войдите в свой аккаунт для подключенияCrashlytics
Настройте Crashlytics с UserX для просмотра сессий с крашем по ссылке из вашего проекта Crashlytics.
Войдите в свой аккаунт для подключенияGoogle Analytics
Интегрируйте свой проект Google Analytics в UserX для возможности просмотра видео сессий по ссылкам из консоли Google Analytics.
Войдите в свой аккаунт для подключенияAppsFlyer
Подключите Userxpro к своему приложению в AppsFlyer чтобы искать сессии пользователей по рекламным кампаниям.
Войдите в свой аккаунт для подключенияИнтегрировал SDK, но сессии не отображаются в консоли UserX
Сессия выгружается на сервера UserX после сворачивания приложения. Если по каким-либо причинам выгрузка сессии не удалась (отсутствует либо плохое подключение к интернет) - сессия будет выгружена при следующем запуске приложения.
Если приложение не было свернуто, а принудительно выгружено из памяти - сессия будет отправлена при следующем запуске. К этой же ситуации относится принудительное завершение приложения через среду разработки (XCode, Android Studio и т.п.). Но также в этой ситуации есть вероятность того, что сессия будет повреждена, то есть не полностью соответствовать реальным данным на экране устройства. Поэтому, если вы записываете вашу первую сессиию крайне желательно чтобы процесс завершения работы с приложением максимально соответствовал реальному взаимодействию обычного пользователя с вашим приложением - работа с приложением была завершена нажатием кнопки "домой", либо "смахнуто" из списка активных приложений. Сессия будет доступна в консоли UserX через пару минут.
Также обратите внимание на параметр "таймаут сессии", который вы можете задать в настройках вашего приложения в консоли UserX. Если время между запусками приложения будет меньше его значения - то сессии будут объединены в одну. Это сделано для того, чтобы не разрывать логически единую сессии в том случае, если пользователь покинул ваше приложение на короткий промежуток времени, например для принятия входящего звонка, или перехода в другое приложение на короткое время.
Длительность хранения данных
Длительность хранения каждой сессий на сервере составляет 90 дней с момента сохранения сессии. После истечения этого срока сессия будет полностью удалена с сервера, при этом на сервере останется небольшая информация о сессии для правильного учета количества сессий пользователя и возможности просмотра истории сессий. Эта информация будет отображена в списке сессий пользователя при просмотре сессии.
Видео из сессии будет удалено через 60 дней. Сама сессия останется доступной, пока не истечет срок ее хранения.
Если вам необходимо изменить длительность хранения данных - сообщите нам об этом в форме обратной связи.
Ограничения на запись сессий
Пользователи вашего приложения могут записывать сессии неограниченной длины.
Ограничение на количество сессий вашего приложения соответствуют ограничениям вашего тарифного плана и настроенным вами параметрам записи.
Список устройств, на которых отключена запись видео
На платформе Android мы не вводим никаких ограничений. Для записи сессий доступны все устройства.
Если вам необходимо исключить запись на каких-либо устройствах - сообщите нам. Также мы можем снизить количество записываемых кадров в секунду у конкретного устройства с целью повышения производительности.
На платформе IOS мы исключили запись видео на некоторых устройствах из-за того, что на них замечено снижение производительности работы приложений с включенным UserX. При этом запись сессии на них ведется - длительность, клики, свайпы, и все параметры.
- iPod Touch 5
- iPod Touch 4
- iPod Touch 3
- iPod Touch 2
- iPod Touch 1
- Apple TV
- Apple TV 4
- iPhone 4
- iPad 2
- iPad 3
- iPad 4
- iPad 5
- iPad Air 1
- iPad Air 2
- iPad Mini 1
- iPad Mini 2
- iPad Mini 3
Если вам необходимо исключить запись на каких-либо устройствах - сообщите нам. Также мы можем снизить количество записываемых кадров в секунду у конкретного устройства с целью повышения производительности.