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

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.
Разработка и поддержка любых видов мобильных приложений:
Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

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

Предлагаемые услуги
Показано 1 из 1 услугВсе 1735 услуг
Интеграция аналитики Branch в мобильное приложение
Средняя
от 1 рабочего дня до 3 рабочих дней
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    756
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    624
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1052
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    947
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    862
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    445

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

Branch — это не просто MMP (Mobile Measurement Partner). Основная ценность платформы — deep linking инфраструктура: Universal Links на iOS и App Links на Android работают корректно даже в edge-кейсах, где стандартные механизмы ломаются. Атрибуция установок — вторичная функция, которая идёт в комплекте.

Типичная ситуация: пользователь кликает на баннер в Instagram Stories на iOS, переходит в App Store, устанавливает приложение. Стандартная атрибуция через Universal Links теряет UTM-параметры на этапе редиректа через App Store. Branch решает это через отложенный диплинк (deferred deep link) — при первом открытии приложения SDK «узнаёт» откуда пришёл пользователь и открывает нужный экран.

Подключение iOS SDK

Через CocoaPods или SPM (BranchPlugin). Конфигурация в AppDelegate:

import Branch

func application(_ application: UIApplication,
                 didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    Branch.getInstance().setIdentity(userId)  // если пользователь авторизован
    Branch.getInstance().initSession(launchOptions: launchOptions) { params, error in
        guard error == nil, let params = params, params["+clicked_branch_link"] as? Bool == true else { return }
        let screen = params["screen"] as? String
        let itemId = params["item_id"] as? String
        // навигация на нужный экран
        NavigationRouter.shared.navigate(to: screen, itemId: itemId)
    }
    return true
}

// Universal Links
func application(_ application: UIApplication,
                 continue userActivity: NSUserActivity,
                 restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
    Branch.getInstance().continue(userActivity)
    return true
}

// URL Schemes
func application(_ app: UIApplication, open url: URL,
                 options: [UIApplication.OpenURLOptionsKey: Any] = [:]) -> Bool {
    Branch.getInstance().application(app, open: url, options: options)
    return true
}

+clicked_branch_link — флаг в params, который отличает Branch-диплинк от обычного первого запуска. Без этой проверки будет навигация куда-то при каждом первом открытии приложения.

Подключение Android SDK

// build.gradle (app)
implementation("io.branch.sdk.android:library:5.+")

В AndroidManifest.xml добавляем метаданные Branch Key и intent-filter для App Links. В Application.onCreate():

Branch.getAutoInstance(this)

В целевой Activity:

override fun onStart() {
    super.onStart()
    Branch.sessionBuilder(this).withCallback { referringParams, error ->
        if (error != null) return@withCallback
        if (referringParams?.getBoolean("+clicked_branch_link") == true) {
            val screen = referringParams.getString("screen")
            // навигация
        }
    }.withData(intent.data).init()
}

Создание диплинков и атрибуция

Branch Link создаётся через дашборд или программно через SDK:

let buo = BranchUniversalObject(canonicalIdentifier: "product/\(productId)")
buo.title = product.name
buo.contentMetadata.customMetadata["screen"] = "product_detail"
buo.contentMetadata.customMetadata["item_id"] = productId

let lp = BranchLinkProperties()
lp.channel = "email"
lp.campaign = "summer_sale"
lp.addControlParam("$fallback_url", withValue: "https://myapp.com/products/\(productId)")

buo.getShortUrl(with: lp) { url, error in
    // url — Branch-ссылка для шаринга
}

$fallback_url — куда отправлять пользователей, у которых не установлено приложение и нет возможности перейти в Store (например, десктопные браузеры).

Атрибуция и аналитика

Branch отслеживает весь путь: клик → установка → первое открытие → конверсионное событие. Передача конверсий:

let event = BranchEvent.standardEvent(.purchase)
event.transactionID = orderId
event.revenue = orderTotal
event.currency = BNCCurrency.RUB
event.logEvent()

Стандартные события (BranchEvent.standardEvent) автоматически мэппятся на рекламные платформы (Meta, Google Ads) без дополнительной настройки.

Проблемы, с которыми сталкиваемся

Associated Domains не настроены — Universal Links не работают, приложение не перехватывает ссылки. Нужно добавить applinks:yourdomain.app.link в Entitlements и убедиться, что Apple Developer Portal содержит Associated Domains Capability.

Клиентский SDK инициализируется после навигации — диплинк-параметры теряются, потому что UI уже отобразился до того, как initSession вернул результат. Решение: откладывать первоначальную навигацию до completion block.

Android Back Stack при диплинке — пользователь открывает приложение через диплинк, попадает на экран продукта, нажимает Back и выходит из приложения вместо перехода на главный экран. Нужно явно выстраивать Back Stack через TaskStackBuilder.

Что входит в работу

  • Подключение Branch SDK (iOS / Android / Flutter / React Native)
  • Настройка Associated Domains и Universal Links на iOS
  • Настройка App Links и intent-filter на Android
  • Конфигурация deferred deep linking с навигацией
  • Создание шаблонов Branch Links для маркетинговых каналов
  • Настройка конверсионных событий
  • Тестирование через Branch Dashboard → Live View

Сроки

Диплинк с атрибуцией на одной платформе: 1–2 дня. iOS + Android с полным набором событий: 3–4 дня. Стоимость рассчитывается индивидуально.