Firebase Dynamic Links: что это, как работает и используется в разработке

Автор: IT Sectr Опубликовано: 2026-05-14 Время чтения: 8 мин

Firebase Dynamic Links — это сервис Google для создания умных ссылок, которые направляют пользователя в нужное место приложения независимо от того, установлено приложение или нет. По данным Firebase Documentation, Dynamic Links автоматически перенаправляют пользователя в App Store или Google Play при отсутствии приложения и восстанавливают контекст перехода после установки. Smart-ссылки Firebase решают проблему URL Scheme, которая не работает с неприложенными приложениями.

Главное

  • Firebase Dynamic Links — сервис Google для создания универсальных ссылок, работающих на iOS и Android с поддержкой deferred deep link.
  • Deferred — главное преимущество: ссылка сохраняет контекст перехода, даже если приложение не установлено, и восстанавливает его после установки.
  • Аналитика — Firebase автоматически отслеживает переходы по Dynamic Links и предоставляет данные в Firebase Analytics и Google Analytics.
  • Платформы — Dynamic Links работают на iOS (через Universal Links) и Android (через App Links) с единой универсальной ссылкой для обеих платформ.
  • Создание — ссылки генерируются через Firebase Console, REST API или SDK на клиенте с настройкой поведения для каждого сценария.

Firebase Dynamic Links — это облачный сервис от Google, который создаёт единые универсальные ссылки для мобильных приложений на iOS и Android. Динамическая ссылка содержит глубокий линк на контент внутри приложения, но ведёт себя как обычная HTTPS-ссылка: если приложение установлено, она открывает его напрямую, если нет — перенаправляет в магазин приложений.

В отличие от обычных URL Scheme, Dynamic Links могут работать с неприложенными приложениями благодаря технологии deferred deep link. Когда пользователь устанавливает приложение после перехода по ссылке, Firebase сохраняет параметры перехода и передаёт их при первом запуске. Это открывает возможности для реферальных программ, маркетинговых кампаний и приглашений.

Отличие от обычных URL Scheme

URL Scheme требуют установленного приложения и не имеют стандартного механизма fallback. Firebase Dynamic Links решают эту проблему через промежуточный веб-сервис Firebase, который определяет статус установки приложения на устройстве и маршрутизирует пользователя корректно. При этом одна ссылка работает одинаково на обеих платформах.

Firebase Dynamic Link использует домен вида yourcode.page.link, который регистрируется в Firebase Console. Когда пользователь переходит по такой ссылке, Firebase определяет тип устройства и статус установки приложения. Для iOS используется механизм Universal Links, для Android — App Links с автоматической верификацией через Digital Asset Links.

Процесс обработки включает несколько последовательных этапов: при переходе по ссылке браузер отправляет GET-запрос к серверу Firebase, сервер определяет платформу и проверяет наличие приложения на устройстве. Если приложение установлено — генерируется редирект на Universal Link или Intent с параметрами для открытия целевого экрана. Если приложение не установлено — редирект в App Store или Google Play для загрузки.

Жизненный цикл Dynamic Link

Приложение получает ссылку на этапе инициализации Firebase SDK. Метод getDynamicLink() возвращает PendingResult с данными о переходе. После успешного получения из ссылки извлекаются параметры deep link, UTM-метки для аналитики и произвольные данные, переданные при создании ссылки.

Firebase Console предоставляет визуальный интерфейс для создания Dynamic Links. Разработчик указывает глубокую ссылку (deep link URL), название кампании, настройки для iOS и Android отдельно, а также параметры аналитики. После создания Firebase генерирует короткую ссылку вида https://yourcode.page.link/abc123, которую можно использовать в рекламных материалах, email-рассылках и социальных сетях.

Для программного создания Dynamic Links используется Firebase REST API или клиентский SDK. REST API позволяет массово генерировать ссылки для маркетинговых кампаний с кастомными параметрами, включая ссылку для социальных сетей и асинхронную аналитику переходов. При создании ссылок через API важно правильно указывать параметры socialMetaTagInfo — они определяют, как ссылка отображается при передаче в мессенджеры и соцсети с превью-карточкой.

Параметры Dynamic Link

ПараметрНазначениеОбязательность
Deep Link URLВнутренняя ссылка на контент приложенияДа
iOS Bundle IDИдентификатор приложения в App StoreДля iOS
Android Package NameИмя пакета в Google PlayДля Android
Fallback URLВеб-страница при отсутствии приложенияНет
UTM-меткиПараметры для Google AnalyticsНет

Для работы с Firebase Dynamic Links на iOS требуется подключить Firebase SDK через CocoaPods или Swift Package Manager, настроить Info.plist с GOOGLE_APP_ID и зарегистрировать домен Dynamic Links в Associated Domains проекта. После этого приложение автоматически обрабатывает Universal Links, сгенерированные Firebase.

В Xcode необходимо добавить capability Associated Domains с записью вида applinks:yourcode.page.link. Firebase SDK использует метод application(_:continue:restorationHandler:) для обработки Universal Links, поэтому дополнительная интеграция с AppDelegate не требуется — Firebase автоматически извлекает параметры Dynamic Link из User Activity.

Настройка в Xcode

Пример настройки Info.plist для корректной инициализации Firebase и регистрации обработчика Dynamic Links. Ключ FIROptions должен содержать идентификатор проекта GoogleService-Info.plist.

xml
<key>FirebaseDynamicLinksCustomDomains</key>
<array>
    <string>https://yourcode.page.link</string>
</array>
<key>FirebaseAppDelegateProxyEnabled</key>
<false/>

Если прокси AppDelegate отключён, необходимо вручную вызывать метод handleUniversalLink(_:) и передавать User Activity из continue NSUserActivity. Firebase SDK автоматически извлекает параметры ссылки и возвращает DynamicLink через completion handler.

На Android интеграция Firebase Dynamic Links начинается с добавления зависимостей в build.gradle и файла google-services.json от Firebase Console. Домен Dynamic Links регистрируется в Firebase Console, после чего все ссылки с этим доменом автоматически распознаются Android-приложением через Intent Filter с action VIEW. Для корректной работы необходимо также добавить плагин Google Services в корневой и модульный build.gradle и выполнить синхронизацию Gradle.

Для корректной обработки ссылок на Android необходимо добавить Intent Filter для домена Dynamic Links в Activity, которая должна принимать входящие ссылки. Фильтр должен содержать схему https, хост вашего домена Dynamic Links и путь по умолчанию.

Intent Filter для Dynamic Links

Пример Intent Filter в AndroidManifest.xml для приёма Dynamic Links на домене yourcode.page.link.

xml
<activity android:name=".MainActivity"
    android:launchMode="singleTask">
    <intent-filter
        android:autoVerify="true">
        <action
            android:name="android.intent.action.VIEW" />
        <category
            android:name="android.intent.category.DEFAULT" />
        <category
            android:name="android.intent.category.BROWSABLE" />
        <data
            android:scheme="https"
            android:host="yourcode.page.link" />
    </intent-filter>
</activity>

Важно установить launchMode singleTask для Activity, принимающей Dynamic Links. Это предотвращает создание нового экземпляра Activity при повторном переходе по ссылке и позволяет корректно обрабатывать все входящие deep link в одном экземпляре.

Firebase SDK для Android предоставляет метод FirebaseDynamicLinks.getInstance().getDynamicLink(intent), который возвращает объект PendingTask с данными о ссылке. Из объекта DynamicLink извлекается глубокий URI, UTM-параметры и метка времени перехода. Обработку рекомендуется выполнять в методе onCreate() и onNewIntent() Activity.

При обработке важно учитывать, что Dynamic Link может быть получен как при запуске приложения из холодного состояния (cold start), так и при переходе из другого приложения в уже запущенное приложение. Для второго случая необходимо переопределить onNewIntent() и повторно вызвать проверку Dynamic Link.

Обработка в коде на Kotlin

Пример получения и обработки Firebase Dynamic Link в MainActivity. Код обрабатывает как cold start, так и переход из другого приложения.

kotlin
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        checkDynamicLink(intent)
    }
    override fun onNewIntent(intent: Intent) {
        super.onNewIntent(intent)
        checkDynamicLink(intent)
    }
    private fun checkDynamicLink(intent: Intent) {
        FirebaseDynamicLinks.getInstance()
            .getDynamicLink(intent)
            .addOnSuccessListener link ->
                val deepLink = link?.link.toString()
                handleDeepLink(deepLink)
            }
    }
}

Метод addOnSuccessListener возвращает DynamicLink, из которого извлекается целевая ссылка через link?.link. Если listener возвращает null, значит Intent не содержит Dynamic Link — это нормальный запуск приложения без входящей ссылки. Также доступны UTM-метки для аналитики переходов, включая campaign, medium, source и content, которые можно передать в Google Analytics для детальной оценки эффективности каждого маркетингового канала.

Часто задаваемые вопросы

Чем Firebase Dynamic Links отличается от обычного deep link?

Firebase Dynamic Links поддерживает deferred deep link — ссылка сохраняет контекст, даже если приложение не установлено. После установки приложение получает все параметры перехода, что невозможно с обычными URL Scheme или Universal Links.

Нужно ли платить за Firebase Dynamic Links?

Firebase Dynamic Links входят в бесплатный тарифный план Firebase Spark. Ограничений на количество создаваемых ссылок нет. Однако с 2024 года Google анонсировал переход на новую инфраструктуру, поэтому условия могут измениться.

Можно ли использовать Dynamic Links в веб-приложении?

Dynamic Links предназначены для мобильных приложений. При переходе из веб-браузера на десктопе ссылка откроет fallback URL. Для веб-приложений используйте обычные ссылки или собственную логику редиректов.

Как тестировать Dynamic Links на этапе разработки?

Firebase Console предоставляет кнопку Test Dynamic Link для предпросмотра поведения. Также можно использовать эмулятор Android или симулятор iOS с установленным Firebase SDK для локального тестирования всех сценариев перехода.

Сколько символов может содержать Dynamic Link?

Короткая ссылка Firebase Dynamic Link состоит из домена page.link и случайного суффикса длиной около 7 символов. Общая длина — примерно 30 символов. Deep link внутри может быть любой длины, но рекомендуется ограничивать его до 2 КБ для совместимости.

Итоги

  • Firebase Dynamic Links — единые универсальные ссылки от Google для iOS и Android с поддержкой deferred deep link.
  • Принцип работы — ссылка проходит через сервер Firebase, который определяет устройство и статус установки приложения для корректной маршрутизации.
  • Deferred — ключевое преимущество: параметры перехода сохраняются и восстанавливаются после установки приложения из магазина.
  • Создание — ссылки генерируются через Firebase Console, REST API или клиентский SDK с настройкой параметров для каждой платформы.
  • iOS-интеграция — требует Associated Domains в Xcode и Firebase SDK; обработка через Universal Links и метод continue UserActivity.
  • Android-интеграция — требует Intent Filter в манифесте с action VIEW и доменом Dynamic Links, plus Firebase SDK в build.gradle.
  • Аналитика — Firebase автоматически отслеживает переходы по Dynamic Links с поддержкой UTM-меток для Google Analytics.

Мы разработаем мобильное приложение под ключ

IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.

Обсудить проект

Читайте также