Мобильное приложение
Если ваше мобильное приложение должно поддерживать переписку с оператором или ботом, не нужно разрабатывать чат с нуля. Виджет Fasttrack встраивается в нативное приложение через стандартный компонент WebView: приложение открывает обычную HTML-страницу со скриптом виджета, а дальше всё работает само. В этой статье — как настроить страницу, передать идентификатор пользователя и подготовить приложение к работе на Android и iOS.
Предварительные требования
Прежде чем начать, убедитесь, что у вас есть:
Доступ к личному кабинету Fasttrack с правами на просмотр настроек виджета.
Созданный виджет в разделе Маркетинг → Виджет.
UUID виджета — уникальный идентификатор вида
4bb3a79e-8075-4244-9440-cd266790cf1c. Где взять: откройте нужный виджет → вкладка «Общие» → блок «Скрипт для мобильного приложения (WebView)». Там же готовый сниппет с кнопкой «Копировать».

Для мобильного разработчика: доступ к исходному коду приложения и возможность добавить или изменить компонент
WebView.
Пошаговая инструкция
Шаг 1. Получите скрипт виджета в админке
Перейдите в Маркетинг → Виджет и выберите нужный виджет.
Откройте вкладку «Общие» и найдите блок «Скрипт для мобильного приложения (WebView)».

Нажмите «Копировать» — вы получите готовый тег
<script>с вашим UUID.
Шаг 2. Создайте HTML-страницу для WebView
Создайте на вашем сервере (или в ресурсах приложения) HTML-файл и вставьте скопированный скрипт. Минимально рабочий вариант:
Замените <UUID-ВИДЖЕТА> на ваш UUID из предыдущего шага, либо вставьте скопированный скрипт из предыдущего пункта.
Важно: Атрибут
data-webviewобязателен. Именно он переключает виджет в режим «только чат» — полноэкранный, без кнопки запуска, без обложки и без кнопки закрытия. Без этого атрибута откроется обычный виджет для сайта, который не подходит для встраивания в приложение.
Шаг 3. Передайте идентификатор пользователя (рекомендуется)
Чтобы пользователь при повторном открытии приложения — или на другом устройстве — видел свою прежнюю переписку, передайте его стабильный идентификатор в значении атрибута data-webview:
Если значение не передать, виджет сгенерирует временный идентификатор и сохранит его в localStorage WebView. Переписка сохранится, пока пользователь не очистит кэш приложения — но при переустановке или на другом устройстве будет потеряна.
Требования к идентификатору
Идентификатор должен быть:
Стабильным — одним и тем же для одного пользователя при каждом входе.
Неугадываемым — UUID или криптографический хэш. Не используйте телефон, e-mail, порядковый номер или любое другое предсказуемое значение.
Виджет проверяет только публичный ключ (он зашит в бандл), но не личность пользователя. Если идентификатор предсказуем, посторонний может подобрать чужой и прочитать его переписку.
✅ Правильно: data-webview="a3f1c9e2-7b4d-4f8a-9c11-2e6d5b8a1f30"
❌ Неправильно: data-webview="42", data-webview="+79991234567"
Шаг 4. Передайте данные пользователя для оператора (необязательно)
Если вы хотите, чтобы оператор в чат-центре видел имя и контакты клиента, а не безликий «Web site user», добавьте атрибуты data-user-*:
data-user-name
Имя пользователя
data-user-phone
Номер телефона
data-user-email
Адрес электронной почты
Все три атрибута необязательны — передавайте только те, что доступны в вашем приложении.
Шаг 5. Настройте WebView в нативном приложении
Android
В Android WebView JavaScript и DOM Storage отключены по умолчанию. Включите их явно:
Также реализуйте WebChromeClient.onShowFileChooser() — иначе кнопка прикрепления файлов в чате будет молча не работать. Без этого метода Android WebView не умеет открывать системный выбор файлов.
Важно: Если ваши пользователи могут отправлять фото с камеры прямо из чата, добавьте в
AndroidManifest.xmlразрешениеandroid.permission.CAMERA. Для выбора уже существующих файлов из галереи разрешений не нужно.
iOS
На iOS используйте WKWebView — JavaScript и хранилище включены в нём по умолчанию, дополнительная настройка не требуется. Системный пикер файлов также открывается автоматически.
Шаг 6. Полный пример HTML-страницы
Итоговая страница с передачей идентификатора и данных пользователя:
Как работает режим WebView — отличия от обычного виджета
Запуск
Сразу открыт полноэкранный чат
Кнопка-launcher или обложка
Кнопка закрытия (×)
Нет
Есть
Переход на обложку
Нет
Есть
Размер
Весь экран
Плавающее окно
Закрытие чата — это скрытие или закрытие WebView средствами нативного приложения. Виджет сам закрыться не может — в этом смысл режима «киоска».
Важно: Виджет не обращается к серверам Fasttrack при открытии страницы — только загружает JS-бандл с CDN. Подключение к чату (авторизация, WebSocket, история сообщений) происходит после первого действия пользователя. Это снижает расход трафика и ускоряет загрузку.
Ограничения и подводные камни
Минимальная ширина окна — 320 px. Если WebView уже — виджет отобразится некорректно. Убедитесь, что у html и body нет внешних отступов и выставлен height: 100%.
Смена пользователя на лету невозможна. Идентификатор из data-webview читается один раз при загрузке страницы. Если нужно переключить учётную запись (например, после выхода из профиля) — перезагрузите страницу в WebView с новым значением атрибута.
Анонимная сессия ненадёжна. Без data-webview переписка хранится только в localStorage конкретного WebView. Очистка кэша, переустановка приложения или вход с другого устройства — и история теряется.
Разные оформления для разных сценариев. Цвета, заголовок, аватар и другие параметры внешнего вида задаются в админке и «запекаются» в бандл — настраивать их со стороны HTML не нужно и нельзя. Если вам нужны разные темы (например, для разных брендов или разделов приложения) — создайте отдельные виджеты с разными UUID.
Осторожно: Не используйте предсказуемые идентификаторы пользователей. Виджет не проверяет личность — только публичный ключ. Утечка предсказуемого идентификатора позволит получить доступ к чужой переписке.
Чеклист для самопроверки
Last updated