Интеграция Intercom SDK для поддержки в мобильном приложении

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1735 услуг
Интеграция Intercom SDK для поддержки в мобильном приложении
Средний
~2-3 дня
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    495

Интеграция 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 поверх всего контента. В большинстве приложений это нежелательно — нужен кастомный entry point:

// Скрыть стандартный 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 дня.