Інтеграція Firebase Performance Monitoring в мобільний додаток
Профайлер на девайсі розробника показує 60 fps. Firebase Crashlytics — немає крашів. Але користувачі пишуть «всё тормозить». Firebase Performance Monitoring — це інструментарій для замірів реального часу відклику на реальних пристроях користувачів, а не в лабораторних умовах.
Що вимірює Performance Monitoring
SDK автоматично збирає:
-
App start time — від виклику
applicationDidFinishLaunchingдо моменту, коли додаток стає інтерактивним -
Screen rendering — для кожного
UIViewControllerна iOS таActivity/Fragmentна Android: slow frames (>16 мс) та frozen frames (>700 мс) -
Network requests — час відповіді, розмір запиту/відповіді, HTTP-статус для всіх запитів через
URLSession/OkHttp
Плюс кастомні трейси для будь-якого блоку коду.
Підключення та кастомні трейси
На iOS через Swift Package Manager або CocoaPods — додаємо FirebasePerformance. SDK інініціалізується автоматично при старті через FirebaseApp.configure().
Кастомний трейс для вимірювання дорогої операції:
import FirebasePerformance
func loadProductCatalog() async {
let trace = Performance.startTrace(name: "load_product_catalog")
defer { trace?.stop() }
trace?.setValue("v2", forAttribute: "api_version")
let products = await productRepository.fetchAll()
trace?.incrementMetric("product_count", by: Int64(products.count))
}
На Android / Kotlin:
val trace = Firebase.performance.newTrace("load_product_catalog")
trace.start()
trace.putAttribute("api_version", "v2")
val products = productRepository.fetchAll()
trace.putMetric("product_count", products.size.toLong())
trace.stop()
putAttribute дозволяє сегментувати трейси в консолі по довільним параметрам — наприклад, дивитися час завантаження окремо для кожної версії API.
Сітьові запити та кастомний NetworkInterceptor
Автоматичний перехват запитів працює через swizzling URLSession на iOS. Якщо проект використовує кастомну URLSession або Alamofire, може потребуватися ручна реєстрація через HTTPMetric:
let metric = HTTPMetric(url: url, httpMethod: .get)
metric?.start()
URLSession.shared.dataTask(with: url) { data, response, error in
metric?.responseCode = (response as? HTTPURLResponse)?.statusCode ?? -1
metric?.stop()
}.resume()
Для Alamofire — додаємо EventMonitor, який обгортає метрики навколо кожного запиту.
Що дивитися в консолі
Після інтеграції у дашборді доступні:
| Метрика | Поріг тривоги |
|---|---|
| App start time | > 2 сек — проблема |
| Slow frames | > 1% |
| Frozen frames | > 0.1% |
| Час сітьового запиту | Аномалії по перцентилям p50/p90/p95 |
Консоль показує розбивку по версіях додатку, країні, типу пристрою та OS. Це єдиний спосіб дізнатися, що конкретний екран тормозить тільки на Android 10 на бюджетних пристроях.
Що входить у роботу
- Додавання SDK та базова інніціалізація
- Кастомні трейси для ключових операцій (завантаження даних, рендер важких списків)
- Налаштування перехвату сітьових запитів при нестандартному стеку
- Базовий дашборд з порогами алертів
Термін
Базова інтеграція з автоматичними трейсами: 1 день. З кастомними трейсами під конкретні екрани та налаштуванням Network interceptor: 2 дні. Вартість розраховується індивідуально.







