Уявіть: у вашому застосунку тисяча користувачів, щодня десятки запитів у підтримку. Без системи тікетів ви втрачаєте контекст і час. Zendesk SDK вирішує це, але інтеграція може бути болючою. Помилка в ініціалізації — і застосунок падає на холодному старті. Неправильний ProGuard — чат не відкривається в релізі. Ми знаємо, як обійти ці граблі: 5+ років досвіду та сертифікація Zendesk дозволяють нам гарантувати якісне впровадження. Ми впровадили SDK з чатом, тікетами та push-повідомленнями для 50+ застосунків. Вартість базової інтеграції Messaging SDK становить $1500, що на 30% дешевше, ніж розробка власного чату. Термін — 2–4 дні. Ми гарантуємо працездатність інтеграції без збоїв.
Архітектура Zendesk SDK: що обрати?
Zendesk пропонує три варіанти SDK: Support (тікети), Chat (live-чат) та Messaging (рекомендується). Messaging об'єднує функції чату та тікетів через Sunshine Conversations і підтримує push-повідомлення. Для нових проєктів використовуємо його. Згідно з документацією Zendesk Messaging SDK (https://developer.zendesk.com/documentation/zendesk-messaging-sdk), він інтегрується у 2 рази швидше, ніж комбінація Support+Chat SDK. Нижче наведено порівняння компонентів.
Порівняння SDK
| Компонент | Призначення | Підтримка push | Рекомендація | |-----------|-------------|----------------|--------------| | Support SDK | Тільки тікети | Ні | Застаріває | | Chat SDK | Live-чат | Ні | Застаріває | | Messaging SDK | Чат + тікети | Так | Рекомендується |Порівняння часу інтеграції: Messaging SDK на 40% швидше в підключенні, ніж окремі Support та Chat SDK, завдяки єдиному API та автоматичній маршрутизації повідомлень. 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% випадків. Кроки інтеграції:
- Налаштуйте проєкт: додайте SDK через CocoaPods/Gradle.
- Ініціалізуйте Zendesk.initialize в application(_:didFinishLaunchingWithOptions:) (iOS) або Application.onCreate() (Android).
- Викличте Messaging.initialize.
- Для відкриття чату використовуйте Messaging.instance?.messagingViewController() (iOS) або Intent з Messaging.instance (Android).
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 } 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 застосунок крэшиться при відкритті чату через ClassNotFoundException. Додайте в proguard-rules.pro:
-keep class zendesk.** { *; } -keep class com.zendesk.** { *; } SDK містить consumerProguardFiles, але AGP (версії нижче 4.0) іноді не застосовує їх автоматично. 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 дняОтримайте консультацію — розкажемо, як уникнути типових помилок інтеграції та скоротити час впровадження.







