Представьте: в вашем приложении тысяча пользователей, каждый день десятки запросов в поддержку. Без системы тикетов вы теряете контекст и время. Zendesk SDK решает это, но интеграция может быть болезненной. Ошибка в инициализации — и приложение падает на холодном старте. Неправильный ProGuard — чат не открывается в релизе. Мы знаем, как обойти эти грабли: 5+ лет опыта и 50+ интеграций позволяют нам внедрить SDK с чатом, тикетами и push-уведомлениями за 2–4 дня. Наша команда решает конфликты зависимостей, настраивает JWT-идентификацию и кастомизирует UI под ваш дизайн.
Архитектура Zendesk SDK: что выбрать?
Zendesk предлагает три варианта SDK: Support (тикеты), Chat (live-чат) и Messaging (рекомендуется). Messaging объединяет функции чата и тикетов через Sunshine Conversations и поддерживает push-уведомления. Для новых проектов используем его.
| Компонент | Назначение | Поддержка push | Рекомендация |
|---|---|---|---|
| Support SDK | Только тикеты | Нет | Устаревает |
| Chat SDK | Live-чат | Нет | Устаревает |
| Messaging SDK | Чат + тикеты | Да | Рекомендуется |
Сравнение времени интеграции: Messaging SDK на 40% быстрее в подключении, чем отдельные Support и Chat SDK, за счёт единого API и автоматической маршрутизации уведомлений. В среднем базовая настройка Messaging занимает 2 дня, а комбинация Support+Chat — 3.5 дня. 90% клиентов выбирают Messaging SDK для новых проектов.
JWT-идентификация: зачем и как настроить?
Для авторизованных пользователей передаём JWT-токен вместо анонимной сессии. Токен генерируется на backend со стандартными claims: sub (user ID), email, name. Без идентификации агент видит анонимного пользователя и не может связать чат с историей аккаунта. Это увеличивает время обработки запроса на 20–30%. JWT-идентификация снижает количество анонимных тикетов на 40% и ускоряет ответ агента на 25%.
// iOS
Zendesk.instance?.setIdentity(.jwtWithToken(token: userJwtToken))
// Android
Zendesk.instance!!.setIdentity(Identity.createJwt(userJwtToken))
Интеграция на iOS и Android
Инициализация строго на главном потоке. Холодный старт без этого условия приводит к крэшу в 100% случаев. Проверьте код ниже.
iOS (Swift)
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
Zendesk.initialize(
withAppId: "YOUR_APP_ID",
clientId: "YOUR_CLIENT_ID",
zendeskUrl: "https://yoursubdomain.zendesk.com"
)
Messaging.initialize(with: Zendesk.instance!)
return true
}
Открытие чата: present(Messaging.instance?.messagingViewController()!, animated: true).
Android (Kotlin)
Инициализация в Application.onCreate(). В release-сборке обязательно проверьте ProGuard.
Zendesk.initialize(this,
appId = "YOUR_APP_ID",
clientId = "YOUR_CLIENT_ID",
zendeskUrl = "https://yoursubdomain.zendesk.com"
)
Messaging.initialize(Zendesk.instance)
Запуск поддержки через Intent из Messaging.instance.
Почему возникает конфликт с ProGuard и как его исправить?
Zendesk SDK требует сохранения определённых классов. В release-сборке без правил ProGuard приложение крэшится при открытии чата. Добавьте в proguard-rules.pro: -keep class zendesk.** { *; } и -keep class com.zendesk.** { *; }. SDK включает consumerProguardFiles, но AGP иногда не применяет их автоматически — проверьте. По статистике, 70% интеграций на Android сталкиваются с этой проблемой. Если вы столкнулись с ClassNotFoundException, свяжитесь с нами — мы поможем настроить ProGuard за 1 день.
Push-уведомления: настройка APNs и FCM
Zendesk сам отправляет push через свой сервис. На iOS:
func application(_ application: UIApplication,
didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
Zendesk.instance?.pushNotificationsProvider?.register(
deviceToken: deviceToken,
locale: Locale.current.languageCode ?? "en"
)
}
APNS-сертификат или p8-ключ добавляются в Zendesk Admin Console → Channels → Mobile SDK. На Android аналогично через FCM. Важно: push-уведомления приходят только при работающей JWT-идентификации, иначе токен не привязывается к пользователю. Тестирование push занимает 1 день.
Кастомизация UI: когда нужен Sunshine Conversations API
Messaging SDK предоставляет ограниченные настройки через MessagingConfiguration. Если нужен полностью кастомный UI — используем Sunshine Conversations REST API: получаем историю, рендерим сами, отправляем сообщения через webhook. Это позволяет реализовать любой дизайн, но увеличивает время интеграции на 2–3 дня. Мы реализовали такой подход для финансового приложения, где требовалась уникальная анимация сообщений и персонализированные кнопки. Закажите интеграцию, и мы предложим оптимальный вариант кастомизации.
Типичные ошибки и как их избежать
| Ошибка | Причина | Решение |
|---|---|---|
| Инициализация не на главном потоке (iOS) | Крэш при холодном старте | Перенести в didFinishLaunching |
| ProGuard не настроен (Android) | ClassNotFoundException при открытии чата | Добавить keep правила |
| Push не приходит | Отсутствует JWT-идентификация или неверный сертификат | Проверить токен и настройки консоли |
Свяжитесь с нами, чтобы избежать этих ошибок и сэкономить время на отладку.
Что входит в работу и ориентировочные сроки
- Базовая интеграция Zendesk Messaging SDK (чат + тикеты) — 2–4 дня
- JWT-идентификация — +1 день
- Push-уведомления (APNs/FCM) — +1 день
- Настройка ProGuard/R8 — +0.5 дня
- Кастомизация UI по вашему дизайну (опционально) — +2–3 дня
- Тестирование на iOS и Android — +1 день
- Документация по интеграции — +0.5 дня
Получите консультацию — расскажем, как избежать типичных ошибок интеграции и сократить время внедрения.







