Інтеграція Firebase App Distribution у мобільний додаток

Ручна збірка та розсилка тестових білдів гальмує випуск оновлень і відволікає команду від розробки. Ми інтегруємо Firebase App Distribution у ваш CI/CD, автоматизуючи доставку свіжих збірок тестувальникам одразу після кожного коміту. Наша команда реалізує проєкт під ключ — від налаштування Fastlane до подальшої підтримки, забезпечуючи надійний процес без зриву термінів.

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

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

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Інтеграція Firebase App Distribution у мобільний додаток
Простий
~1 день
Часті запитання

Зауважимо: коли команда випускає 10+ тестових збірок на день, очікування App Store Review стає критичним вузьким місцем. Firebase App Distribution вирішує цю проблему: .ipa та .apk доставляються безпосередньо тестувальникам, минаючи магазинні рев’ю. Ми інтегруємо цей сервіс у ваш CI/CD, щоб кожен коміт автоматично перетворювався на доступний для тестувальників білд. Термін життя білдів не обмежений, на відміну від 90-денного TestFlight. За 2 хвилини після коміту тестер отримує свіжий білд на пристрій.

Які типові помилки виникають при інтеграції?

Перший граблі: забути додати GoogleService-Info.plist в target membership тестового таргету. SDK ініціалізується через FirebaseApp.configure(), але якщо plist тільки в основному таргеті — краш на старті. Другий: на iOS .ipa не встановлюється через відсутність UDID в provisioning profile. App Distribution збирає UDID, але оновлювати профілі — ваше завдання. Автоматизуємо це через fastlane match. Третій: сповіщення про оновлення не приходять. SDK має бути ініціалізований до виклику checkForUpdate, і код не повинен виконуватися в production. У 95% випадків ці три проблеми вирішуються за годину.

Як ми налаштовуємо автоматичну доставку?

Робоча схема з Fastlane та Firebase CLI:

lane :distribute_firebase do
  build_ios_app(
    scheme: "MyApp",
    configuration: "Release",
    export_method: "ad-hoc"
  )
  firebase_app_distribution(
    app: "1:123456789:ios:abcdef",
    groups: "qa-team, beta-users",
    release_notes: last_git_commit[:message],
    firebase_cli_token: ENV["FIREBASE_TOKEN"]
  )
end

Токен з firebase login:ci зберігаємо в CI/CD secrets. Групи (qa-team, beta-users) створені в Firebase Console окремо для iOS та Android.

Для Android використовуємо Gradle task + firebase CLI безпосередньо:

firebase appdistribution:distribute app-release.apk \
  --app $FIREBASE_APP_ID \
  --groups "qa-team" \
  --release-notes "$(git log -1 --pretty=%B)" \
  --token $FIREBASE_TOKEN

Час завантаження .ipa 50 МБ — близько 90 секунд.

Як налаштувати сповіщення в додатку?

SDK вміє показувати нативний alert при старті, якщо є нова версія:

import FirebaseAppDistribution
AppDistribution.appDistribution().checkForUpdate { release, error in
    guard let release = release else { return }
    let alert = UIAlertController(
        title: "Доступно оновлення \(release.displayVersion)",
        message: release.releaseNotes ?? "",
        preferredStyle: .alert
    )
    alert.addAction(UIAlertAction(title: "Оновити", style: .default) { _ in
        UIApplication.shared.open(release.downloadURL)
    })
}

Важно: в production цей код відключаємо за допомогою #if DEBUG або прапорця збірки. На Android використовуємо аналогічний підхід:

FirebaseAppDistribution.getInstance().updateIfNewReleaseAvailable()
    .addOnProgressListener { updateProgress ->
        // Оновлюємо прогрес-бар
    }
    .addOnFailureListener { e ->
        if (e is FirebaseAppDistributionException) {
            when (e.errorCode) {
                FirebaseAppDistributionException.Status.NOT_IMPLEMENTED ->
                    // SDK не в тестовому середовищі
            }
        }
    }

Чому Firebase App Distribution краще TestFlight?

Тестувальник отримує оновлення одразу після CI/CD-пайплайну, без очікування рев’ю. App Distribution не вимагає завантаження в App Store Connect, що економить до 2 годин на кожен білд. Для Android альтернатив з таким же рівнем автоматизації практично немає: TestFlight взагалі не підтримує Android, а власні рішення вимагають розробки.

Порівняння: Firebase App Distribution vs TestFlight

Критерій Firebase App Distribution TestFlight
Термін життя білда Безстроково 90 днів
App Store Review Не потрібен Потрібен для external
Робота з Android Так Тільки iOS
Автоматизація CI/CD З коробки (CLI) Через Xcode Server або сторонні
Групи тестерів По email / групам По email + внутрішні
Безпека HTTPS, Firebase Storage HTTPS, Apple servers
Вартість включена в Firebase Безкоштовно (до лімітів) Вимагає Apple Developer ($99/рік)

App Distribution виграє у швидкості та гнучкості для внутрішніх білдів. Згідно з Firebase Documentation, інтеграція з CI/CD скорочує час доставки білдів на 80%.

Порівняння способів роздачі білдів: ручний vs автоматичний

Параметр Ручна роздача Автоматизація через App Distribution
Час на один білд 15–30 хвилин 2 хвилини
Ймовірність помилки Висока (людський фактор) Мінімальна
Масштабованість Ускладнена Легко розширюється на нові групи
Оновлення тестувальників Вручну по email Push-сповіщення в додатку

Чек-лист перед запуском

  • Наявність GoogleService-Info.plist в тестовому таргеті
  • UDID тестувальників додані в provisioning profile
  • FirebaseApp.configure() викликаний до checkForUpdate
  • SDK відключений в production (через #if DEBUG або прапорець збірки)
  • Групи тестерів створені в Firebase Console
  • Для Android: google-services.json включений в проект

Що входить в роботу?

  • Налаштування Firebase Console та створення проектів для iOS/Android
  • Інтеграція Firebase SDK в обидва додатки (включаючи GoogleService-Info.plist/google-services.json)
  • Автоматизація збірки та завантаження через Fastlane або GitHub Actions
  • Налаштування сповіщень про оновлення (SDK + custom UI)
  • Створення груп тестерів та роздача доступів
  • Документація по оновленню provisioning profile (iOS) та ключів підпису

Процес роботи

  1. Аналіз — вивчаємо поточний CI/CD ланцюжок, визначаємо точки інтеграції
  2. Налаштування Firebase — створюємо проект, підключаємо додатки, генеруємо ключі
  3. Інтеграція SDK — додаємо Firebase в код, налаштовуємо ініціалізацію
  4. Автоматизація — пишемо скрипти Fastlane/GitHub Actions для збірки та вивантаження
  5. Тестування — перевіряємо роздачу білдів та сповіщення на iOS і Android
  6. Запуск — навчаємо команду, передаємо документацію

Терміни та вартість

Інтеграція в існуючий CI/CD займає 2–4 дні. Повний цикл з налаштуванням сповіщень та груп — до 1.5 тижнів. Вартість розраховується індивідуально, залежить від складності поточного пайплайну. Оцінимо проект — зв'яжіться з нами.

15+ років досвіду в мобільній розробці, 50+ успішних інтеграцій Firebase. Гарантуємо стабільну роботу білдів та оперативну підтримку. Замовте інтеграцію Firebase App Distribution вже сьогодні.

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

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

  • Розробка мобільного додатка для компанії FEEDME
    Розробка мобільного додатка для компанії FEEDME
    1010
  • Розробка мобільного додатку для компанії XOOMER
    Розробка мобільного додатку для компанії XOOMER
    903
  • Розробка мобільного додатку для компанії RHL
    Розробка мобільного додатку для компанії RHL
    1332
  • Розробка мобільного додатку для компанії ZIPPY
    Розробка мобільного додатку для компанії ZIPPY
    1180
  • Розробка мобільного додатку для компанії Affhome
    Розробка мобільного додатку для компанії Affhome
    1107
  • Розробка мобільного додатку для компанії FLAVORS
    Розробка мобільного додатку для компанії FLAVORS
    714