Інтеграція Intercom SDK для підтримки у мобільному додатку
Intercom відрізняється від Zendesk й Freshdesk тим, що спочатку проектувався як product engagement платформа — з таргетованими in-app повідомленнями, onboarding-турами й автоматичними чат-ботами (Fin AI). Коли потрібно не просто реагувати на запити, а проактивно супроводжувати користувача — Intercom зазвичай виграє.
Встановлення й ініціалізація
iOS
// Podfile
pod 'Intercom'
// AppDelegate
import Intercom
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
Intercom.setApiKey("ios_sdk-...", forAppId: "your_app_id")
return true
}
Intercom не підтримує Swift Package Manager повністю для динамічних фреймворків на iOS — тільки CocoaPods або Carthage. Це перше, що вражає розробників, привичних до SPM.
Android
// build.gradle.kts
implementation("io.intercom.android:intercom-sdk:15.x.x")
// Application.onCreate()
Intercom.initialize(this, "android_sdk-...", "your_app_id")
Ідентифікація користувача
Intercom підтримує два режими: анонімний (для неавторизованих) й ідентифікований з HMAC-верифікацією.
// iOS: авторизований користувач
let attrs = ICMUserAttributes()
attrs.userId = "user_12345"
attrs.email = "[email protected]"
attrs.name = "John Doe"
// Кастомні атрибути для сегментації
attrs.customAttributes = [
"plan": "premium",
"signup_date": Date()
]
Intercom.loginUser(with: attrs) { result in
switch result {
case .success: break
case .failure(let error): print(error)
}
}
HMAC-верифікація обов'язкова в продакшені. Без неї будь-який користувач може підмінити userId й отримати чужу історію переписки. Backend генерує HMAC:
Intercom.setUserHash("backend_generated_hmac_string")
Генерація на backend (Node.js):
const crypto = require('crypto');
const hash = crypto.createHmac('sha256', process.env.INTERCOM_SECRET)
.update(userId)
.digest('hex');
Messenger й In-App повідомлення
Відкриття чату:
Intercom.present() // весь Messenger
Intercom.presentMessageComposer(nil) // відразу нове повідомлення
Intercom.presentContent(.helpCenter) // тільки Help Center
In-App повідомлення (баннери, модалки) показуються автоматично на основі правил у Intercom Console — не вимагають коду на клієнті, тільки коректної ідентифікації користувача.
Скриття Launcher
За замовчуванням Intercom показує floating button поверх всього контенту. У більшості додатків це небажано — потрібна кастомна точка входу:
// Приховати стандартний launcher
Intercom.setLauncherVisible(false)
// Кастомна кнопка підтримки
@IBAction func supportTapped(_ sender: UIButton) {
Intercom.present()
}
Push-уведомлення
// Реєстрація APNs токена
func application(_ application: UIApplication,
didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
Intercom.setDeviceToken(deviceToken)
}
// Обробка входящого push
func userNotificationCenter(_ center: UNUserNotificationCenter,
didReceive response: UNNotificationResponse,
withCompletionHandler completionHandler: @escaping () -> Void) {
if Intercom.isIntercomPushNotification(response.notification.request.content.userInfo) {
Intercom.handlePushNotification(response.notification.request.content.userInfo)
}
completionHandler()
}
Push Intercom приходить через APNs стандартно, але payload містить intercom ключ — потрібно перевіряти перед обробкою, щоб не конфліктувати з Firebase Messaging.
Конфлікт з іншими SDK
Intercom й Firebase Messaging обидва встановлюють UNUserNotificationCenterDelegate. Потрібен єдиний делегат, який роутить push:
// AppDelegate
func userNotificationCenter(_ center: UNUserNotificationCenter,
willPresent notification: UNNotification,
withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
let userInfo = notification.request.content.userInfo
if Intercom.isIntercomPushNotification(userInfo) {
completionHandler([])
} else {
// Firebase або інший обработчик
completionHandler([.banner, .sound])
}
}
Орієнтири по строкам
Базова інтеграція з чатом, ідентифікацією й push — 3–5 днів. Настройка кастомних подій для сегментації, тестування in-app повідомлень й перевірка HMAC на staging — плюс 1–2 дні.







