Firebase Dynamic Links: какво е, как работи и се използва в разработката

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

Firebase Dynamic Links е услуга на Google за създаване на умни връзки, които насочват потребителя към правното място в приложението, независимо дали приложението е инсталирано или не. Според Firebase Documentation, Dynamic Links автоматично пренасочват потребителя към App Store или Google Play, когато приложението лилсва, и възстановяват контекста на прехода след инсталация. Умните връзки на 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, която може да се използва в рекламни материали, имейл кампании и социални мрежи.

За програмно създаване на 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 и регистрация на handler-а за 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 с действие 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 KB за съвместимост.

Заключение

  • 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 в манифеста с действие VIEW и домейн на Dynamic Links, плюс Firebase SDK в build.gradle.
  • Аналитика — Firebase автоматично проследява преходите чрез Dynamic Links с подкрепа на UTM етикети за Google Analytics.

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

IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.

Обсъдете проекта

Прочетете също