Інтеграція Freshdesk SDK у мобільний додаток: чат, push, кастомізація
Додаток із тисячами користувачів — і email-підтримка тоне в хаосі. Чат всередині додатка став стандартом, але не кожен SDK витримує навантаження. Freshdesk SDK популярний, але на практиці ми стикалися з втраченими історіями після перевстановлення, конфліктами тем на Android та неочікуваною витратою пам'яті. За 5+ років ми інтегрували його в 50+ проєктів — від фінтеху до e-commerce. SDK покриває основні потреби: чат, FAQ, push-сповіщення, тикет-система. Однак документація часто відстає від релізів, і без бойового досвіду легко наступити на граблі. Розберемо ключові моменти, щоб інтеграція пройшла гладко.
Чому варто обрати Freshdesk SDK?
Freshdesk SDK — вибір, коли потрібна тикет-система з чатом, але хочеться уникнути enterprise-цінників Zendesk або Intercom. Freshdesk дешевший при порівнянному функціоналі та підходить для проєктів з бюджетом під контроль. SDK підтримує чат, FAQ, push-сповіщення та REST API. Інтеграція займає від 2 днів до тижня — залежно від необхідних кастомізацій. Наприклад, базова конфігурація з чатом та FAQ готова за 2–3 дні, а повна з Restore ID та мультимовністю — до тижня. У 90% випадків команді вдається вкластися в ці рамки.
Як ми підключаємо SDK
Для встановлення SDK виконайте наступні кроки:
- Додайте залежність у проєкт.
- Налаштуйте ініціалізацію в точці входу додатка.
- Налаштуйте push-сповіщення (APNs/FCM).
- Кастомізуйте тему під бренд.
iOS
# Podfile pod 'FreshchatSDK' Freshchat SDK додає близько 8–12 MB до розміру бінарника. Для додатків, де вага критична, це важливо врахувати до початку інтеграції.
Android
// build.gradle.kts implementation("com.freshchat.consumer.sdk:freshchat-android:5.x.x") Для Android потрібен мінімальний minSdk = 21 — якщо в проєкті нижче, знадобиться зниження або умовне завантаження.
Ініціалізація (iOS)
import FreshchatSDK let config = FreshchatConfig( appID: "YOUR_APP_ID", andAppKey: "YOUR_APP_KEY" ) config.teamMemberInfoVisible = true config.showNotificationBanner = true Freshchat.sharedInstance().initWith(config) На Android ініціалізація аналогічна: створюєте FreshchatConfig в Application.onCreate().
Як налаштувати push-сповіщення для Freshchat?
Push-сповіщення — ключовий канал для миттєвої відповіді. Freshchat використовує власний push-канал через APNs на iOS та FCM на Android. Вам знадобиться завантажити p8-ключ або p12-сертифікат у Freshdesk Admin → Mobile App. У додатку передайте APNs токен при реєстрації:
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { Freshchat.sharedInstance().setPushRegistrationToken(deviceToken) } При отриманні сповіщення перевірте, чи належить воно Freshchat:
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any]) { if Freshchat.sharedInstance().isFreshchatNotification(userInfo) { Freshchat.sharedInstance().handleRemoteNotification(userInfo, andAppState: application.applicationState) } } Цей фрагмент коду — стандартна обробка. Не забудьте налаштувати App Groups для спільного використання push-даних між додатком та розширеннями.
Які типові помилки виникають при інтеграції?
Нижче — таблиця частих проблем та їх рішень:
| Проблема | Рішення |
|---|---|
| Конфлікт тем на Android | Наслідувати тему Freshchat від вашої базової через FreshchatTheme override в styles.xml |
| Втрата історії чату | Реалізувати механізм Restore ID: зберегти ID на backend і відновлювати при перевстановленні |
| Локалізація рядків | Перевизначити рядки SDK через Localizable.strings (iOS) або strings.xml (Android) з тими ж ключами |
| Несумісність з ProGuard | Додати правила keep: -keep class com.freshchat.** { *; } |
Приклад конфігурації ProGuard
```proguard -keep class com.freshchat.** { *; } -keep class com.freshchat.consumer.** { *; } -keepclassmembers class * { @com.freshchat.consumer.sdk.annotation.Keep *; } ```Важливо: кастомні властивості передаються агенту — вони видимі в панелі Freshdesk при перегляді чату. Не передавайте чутливі дані (паролі, повні номери карт) навіть у замаскованому вигляді.
Відновлення історії чату: що потрібно знати?
Після видалення додатка історія чату втрачається, якщо не реалізувати механізм Restore ID. Freshchat генерує унікальний ID при першій ініціалізації — його потрібно зберегти на backend і відновити при наступній сесії, викликавши setRestoreId. Це критично для додатків, де важлива безперервність підтримки. Restore ID не залежить від токенів пристроїв і дозволяє відновити чат навіть на новому пристрої. Середній час на реалізацію — 2–3 години.
Що входить в інтеграцію
- Налаштування чату та FAQ з кастомними тегами
- Інтеграція push-сповіщень (APNs / FCM)
- Кастомізація теми під бренд додатка
- Реалізація Restore ID для збереження історії
- Документація з інтеграції та навчання команди
- Супровід при публікації в App Store та Google Play
Строки
| Етап | Час |
|---|---|
| Базова інтеграція (чат + push) | 2–4 дні |
| Кастомізація теми | +1–2 дні |
| Restore ID та мультимовність | +2–3 дні |
| Повний цикл | 1 тиждень |
Вартість розраховується індивідуально. Зв'яжіться з нами для оцінки вашого проєкту — ми підготуємо пропозицію за 1 день. Отримайте консультацію з інтеграції Freshdesk SDK та замовте демонстрацію на вашому стенді.
Гарантуємо коректну роботу push-сповіщень та збереження історії чату. Наш досвід з більш ніж 50 проєктами дозволяє уникнути типових граблів.







