Перейти к содержимому

Мобильные SDK

Мобильные SDK - это аналог веб-виджета для ваших собственных приложений: клиенты получают поддержку внутри приложения с полной историей диалогов и push-уведомлениями, а ваши агенты видят эти диалоги в том же общем ящике. Это не приложения для агентов вашей команды; они относятся к отдельной линейке продуктов.

Платформа Язык и среда выполнения Распространение Статус
iOS Swift 5.9+, iOS 15+ Swift Package Manager, CocoaPods в разработке
Android Kotlin 1.9+, Android 8.0 (API 26)+ Maven Central в разработке
React Native обёртка над нативными SDK npm запланировано (бета)
Flutter обёртка над нативными SDK pub.dev запланировано (бета)

Нативные SDK являются основными; обёртки выходят после них. Приложения для часов и ТВ, а также десктопные SDK не входят в планы; для десктопа используйте веб-виджет.

Текстовые сообщения, вложения, голосовые сообщения, изображения и видео, анонимные и идентифицированные сессии, темы оформления, собственный аватар и брендинг, 40 языков, ИИ-консьерж, история диалогов, значки непрочитанного, push-уведомления, глубокие ссылки, звонок в одно касание через номеронабиратель телефона, офлайн-очередь с фоновой синхронизацией, биометрическая разблокировка чата, поддержка VoiceOver и TalkBack, тёмный режим. Целевой размер после компиляции: не более 5 MB на платформу.

Звонки WebRTC внутри приложения и демонстрация экрана со стороны клиента появятся в одном из следующих релизов. Совместный просмотр (cobrowse) доступен только в вебе: мобильные операционные системы не позволяют стороннему SDK наблюдать за экраном или управлять им.

Инициализируйте один раз, в начале жизненного цикла приложения:

// iOS
let config = RolChatConfig(
siteId: "site_abc123",
apiKey: "pk_live_…", // public key - safe to ship in the app
region: .eu, // eu / us
theme: RolChatTheme(primaryColor: .blue)
)
RolChat.shared.initialize(config: config)
// Android
val config = RolChatConfig.Builder()
.siteId("site_abc123")
.apiKey("pk_live_…")
.region(Region.EU)
.theme(RolChatTheme(primaryColor = Color.Blue))
.build()
RolChat.initialize(context, config)

Идентифицируйте пользователя после входа и выполняйте выход вместе с ним:

RolChat.shared.identify(userId: "user_12345", email: "alice@example.com", name: "Alice",
metadata: ["tier": "gold"])
RolChat.shared.logout() // on host-app sign-out, or the next user sees this history

Покажите интерфейс:

RolChat.shared.openChat() // modal
RolChat.shared.openChat(conversationId: id) // a specific conversation
RolChat.shared.openChatInline(view) // inside your own layout
RolChat.shared.close()

Колбэки: rolChatDidOpen, rolChatDidClose, rolChatDidReceiveMessage(_:), rolChatDidFailToSend(_:). Публичный API безопасен для главного потока в iOS и для фоновых потоков в Android; соединения разрываются, когда приложение уходит в фон, и восстанавливаются при возврате на передний план.

  • Анонимная: идентификатор сессии устройства хранится в связке ключей или в зашифрованных настройках, переживает обновления приложения и привязан к устройству, а не к пользователю. Он удаляется после 90 дней неактивности.
  • Идентифицированная: после identify сессия повышается и объединяется с анонимной историей на том же устройстве, если это однозначно. Сопоставление личности между каналами следует правилам графа идентичности и согласию.
  • Доверенная идентификация: ваш бэкенд подписывает токен с данными пользователя; SDK передаёт его, и RolChat проверяет подпись перед повышением сессии. Неподписанный identify работает, но с меньшим уровнем доверия.

Публичный API-ключ в приложении безопасен по своей конструкции: он ограничен сайтом и лимитами запросов.

Платформа Транспорт Что вы предоставляете
iOS APNs Ключ аутентификации APNs в панели управления RolChat
Android FCM JSON сервисного аккаунта FCM
RolChat.shared.setPushToken(deviceToken, type: .apns)
if RolChat.shared.handleNotification(userInfo) { return } // consumed: a chat message

Текст уведомлений локализуется на сервере под язык пользователя. Расширенные уведомления поддерживают аватар, ответ прямо из уведомления и отметку о прочтении. SDK никогда сам не запрашивает разрешение на push-уведомления; вызовите requestPushPermission(), когда это уместно в вашем онбординге. Отказаться можно через setPushEnabled(false) или настройки ОС; оба варианта фиксируются.

Строгое семантическое версионирование. Одновременно поддерживаются две мажорные версии, на миграцию после мажорного релиза даётся год. Минорные релизы выходят ежемесячно; исправления безопасности - немедленно; о мажорных релизах объявляется за три месяца. Устаревший или неподдерживаемый SDK пишет предупреждение в лог при запуске, а панель управления показывает его в разделе «Интеграции».

Никакого отслеживания сверх того, что вы включили; запросы согласия используют нативные шаблоны платформы, а запросы субъектов данных по GDPR, CCPA и LGPD распространяются на сессии SDK так же, как на любой другой канал. Вложения сжимаются на устройстве, загружаются по подписанным URL и проверяются на вирусы до того, как их увидят агенты.