Мобильные 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 не входят в планы; для десктопа используйте веб-виджет.
Что входит в SDK
Заголовок раздела «Что входит в SDK»Текстовые сообщения, вложения, голосовые сообщения, изображения и видео, анонимные и идентифицированные сессии, темы оформления, собственный аватар и брендинг, 40 языков, ИИ-консьерж, история диалогов, значки непрочитанного, push-уведомления, глубокие ссылки, звонок в одно касание через номеронабиратель телефона, офлайн-очередь с фоновой синхронизацией, биометрическая разблокировка чата, поддержка VoiceOver и TalkBack, тёмный режим. Целевой размер после компиляции: не более 5 MB на платформу.
Звонки WebRTC внутри приложения и демонстрация экрана со стороны клиента появятся в одном из следующих релизов. Совместный просмотр (cobrowse) доступен только в вебе: мобильные операционные системы не позволяют стороннему SDK наблюдать за экраном или управлять им.
Интерфейс SDK
Заголовок раздела «Интерфейс SDK»Инициализируйте один раз, в начале жизненного цикла приложения:
// iOSlet 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)// Androidval 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() // modalRolChat.shared.openChat(conversationId: id) // a specific conversationRolChat.shared.openChatInline(view) // inside your own layoutRolChat.shared.close()Колбэки: rolChatDidOpen, rolChatDidClose, rolChatDidReceiveMessage(_:), rolChatDidFailToSend(_:). Публичный API безопасен для главного потока в iOS и для фоновых потоков в Android; соединения разрываются, когда приложение уходит в фон, и восстанавливаются при возврате на передний план.
Сессии и идентификация
Заголовок раздела «Сессии и идентификация»- Анонимная: идентификатор сессии устройства хранится в связке ключей или в зашифрованных настройках, переживает обновления приложения и привязан к устройству, а не к пользователю. Он удаляется после 90 дней неактивности.
- Идентифицированная: после
identifyсессия повышается и объединяется с анонимной историей на том же устройстве, если это однозначно. Сопоставление личности между каналами следует правилам графа идентичности и согласию. - Доверенная идентификация: ваш бэкенд подписывает токен с данными пользователя; SDK передаёт его, и RolChat проверяет подпись перед повышением сессии. Неподписанный
identifyработает, но с меньшим уровнем доверия.
Публичный API-ключ в приложении безопасен по своей конструкции: он ограничен сайтом и лимитами запросов.
Push-уведомления
Заголовок раздела «Push-уведомления»| Платформа | Транспорт | Что вы предоставляете |
|---|---|---|
| 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 и проверяются на вирусы до того, как их увидят агенты.