Налаштування моніторингу швидкості запуску застосунку (Launch Time Tracking)

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

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1735 послуг
Налаштування моніторингу швидкості запуску застосунку (Launch Time Tracking)
Середній
від 4 годин до 2 днів
Часті запитання

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

Етапи розробки

Останні роботи

  • 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

Моніторинг скорості запуску додатка (Launch Time Tracking)

Час холодного запуску — одна з небагатьох метрик, яку користувач помічає до того, як побачити хоч один екран додатка. Apple відхиляє додатки з cold launch > 20 секунд, але реальний поріг сприйняття — близько 2 секунд. Якщо ваші дані кажуть «запуск в середньому 1.2 сек», а P95 — 4.8 секунд, значить кожен двадцятий користувач чекає майже п'ять секунд. Без моніторингу цей хвіст невидимий.

Типи запусків

Cold launch — додаток не в пам'яті, процес створюється заново. Найповільніший, найважливіший для моніторингу.

Warm launch (iOS) — додаток був у пам'яті, але скинутий у background. Процес живий, але viewDidLoad виконується заново.

Hot launch — повернення з background. Практично миттєвий. Не плутати з warm: hot не потребує re-init.

Моніторте cold та warm. Hot не показовий.

Вбудовані інструменти платформ

iOS — MetricKit. Починаючи з iOS 13, система агрегує діагностику реальних користувачів та видає через MXMetricManager:

class AppDelegate: MXMetricManagerSubscriber {
    func applicationDidFinishLaunching() {
        MXMetricManager.shared.add(self)
    }

    func didReceive(_ payloads: [MXMetricPayload]) {
        for payload in payloads {
            if let launchMetric = payload.applicationLaunchMetrics {
                let coldLaunchP50 = launchMetric.histogrammedTimeToFirstDrawKey
                    .histogram(for: .applicationLaunchTimeToFirstDraw)
                // Відправляємо в аналітику
                Analytics.track("cold_launch_p50", value: coldLaunchP50)
            }
        }
    }
}

MetricKit видає дані раз на добу, агреговані за попередні 24 години. Не real-time, але реальна вибірка по всім користувачам.

Android — Firebase Performance Monitoring. app_start trace збирається автоматично при підключенні SDK. Розділяє app_start_cold та app_start_warm. Доступний у Firebase Console з розбивкою по пристроях, версіях ОС, версіях додатка.

Для кастомних міток у Android — FirebasePerformance.getInstance().newTrace("custom_init") + start() / stop(). Дозволяє зрозуміти, яка саме ініціалізація тормозить.

Інструментирование у коді

Навіть без зовнішніх SDK можна виміряти запуск самостійно.

iOS:

// У AppDelegate або @main
static let appLaunchTimestamp = Date()

// У viewDidAppear першого екрана
let launchDuration = Date().timeIntervalSince(AppDelegate.appLaunchTimestamp)
Analytics.track("cold_launch_duration", value: launchDuration)

Але цей метод неточний — не враховує pre-main час (динамічні бібліотеки, runtime). Для pre-main: змінна окружения DYLD_PRINT_STATISTICS у Xcode схемі.

Android:

class App : Application() {
    override fun onCreate() {
        val start = SystemClock.elapsedRealtime()
        super.onCreate()
        // ... ініціалізація
        val initDuration = SystemClock.elapsedRealtime() - start
        FirebaseAnalytics.getInstance(this).logEvent("app_init_duration") {
            param("duration_ms", initDuration)
        }
    }
}

SystemClock.elapsedRealtime() точніше System.currentTimeMillis() для вимірювання інтервалів.

Dashboard та алерти

Мінімальний набір метрик для моніторингу:

Метрика Інструмент Цільове значення
Cold launch P50 Firebase / MetricKit < 1.5 сек
Cold launch P95 Firebase / MetricKit < 3.0 сек
Cold launch по версіях Firebase Не растет
Slow cold launches (> 5 сек) Firebase < 5%

Алерт на зростання P95 між версіями — важливіше абсолютного значення. Регресія на 500 мс між двома релізами — сигнал шукати винуватця в diff змін.

У Grafana або Firebase Alerts налаштовуємо сповіщення: якщо P95 cold launch у поточній версії перевищує P95 попередної версії на 20% — сповіщення в Slack.

Терміни настройки: один-два робочі дні для базової інтеграції Firebase Performance або MetricKit + автоматичні алерти.