Создание динамических ссылок на Android

Вы можете создавать короткие или длинные Dynamic Links с помощью API Firebase Dynamic Links Builder. Этот API принимает либо длинную Dynamic Link , либо объект, содержащий параметры Dynamic Link , и возвращает URL-адреса, как показано в следующих примерах:

https://example.com/link/WXYZ
https://example.page.link/WXYZ

Прежде чем вы сможете создавать Dynamic Links в своем приложении Android, вы должны включить Firebase SDK. Если ваше приложение настроено на получение Dynamic Links , вы уже выполнили эти шаги и можете пропустить этот раздел.

  1. Если вы еще этого не сделали, добавьте Firebase в свой проект Android .

    При регистрации приложения укажите ключ подписи SHA-1. Если вы используете ссылки на приложения, также укажите свой ключ SHA-256.

  2. В файле Gradle вашего модуля (на уровне приложения) (обычно <project>/<app-module>/build.gradle.kts или <project>/<app-module>/build.gradle ) добавьте зависимость для Dynamic Links . библиотека для Android. Мы рекомендуем использовать Firebase Android BoM для управления версиями библиотеки.

    Для оптимальной работы с Dynamic Links мы рекомендуем включить Google Analytics в вашем проекте Firebase и добавить Firebase SDK для Google Analytics в ваше приложение.

    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:33.7.0"))
    
        // Add the dependencies for the Dynamic Links and Analytics libraries
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-dynamic-links'
        implementation 'com.google.firebase:firebase-analytics'
    }

    Используя Firebase Android BoM , ваше приложение всегда будет использовать совместимые версии библиотек Firebase Android.

    (Альтернатива) Добавить зависимости библиотеки Firebase без использования BoM

    Если вы решите не использовать Firebase BoM , вы должны указать каждую версию библиотеки Firebase в ее строке зависимости.

    Обратите внимание: если вы используете в своем приложении несколько библиотек Firebase, мы настоятельно рекомендуем использовать BoM для управления версиями библиотек, что гарантирует совместимость всех версий.

    dependencies {
        // Add the dependencies for the Dynamic Links and Analytics libraries
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-dynamic-links:22.1.0'
        implementation 'com.google.firebase:firebase-analytics:22.1.2'
    }
    Ищете библиотечный модуль, специфичный для Kotlin? Начиная с октября 2023 года ( Firebase BoM 32.5.0) от основного модуля библиотеки могут зависеть как разработчики Kotlin, так и Java (подробнее см. FAQ по этой инициативе ).
  3. В консоли Firebase откройте раздел Dynamic Links .
  4. Если вы еще не приняли условия обслуживания и не установили домен для своих Dynamic Links , сделайте это при появлении соответствующего запроса.

    Если у вас уже есть домен Dynamic Links , обратите на него внимание. Вам необходимо предоставить домен Dynamic Links при программном создании Dynamic Links .

  5. Рекомендуется : укажите шаблоны URL-адресов, разрешенные в глубоких ссылках и резервных ссылках. Поступая таким образом, вы предотвращаете создание неавторизованными лицами Dynamic Links , которые перенаправляют с вашего домена на сайты, которые вы не контролируете. См. раздел Разрешить определенные шаблоны URL-адресов .

Используйте консоль Firebase

Если вы хотите создать одну Dynamic Link либо для целей тестирования, либо для того, чтобы ваша маркетинговая команда могла легко создать ссылку, которую можно использовать в чем-то вроде сообщения в социальной сети, самый простой способ — посетить консоль Firebase и создать ее. вручную, следуя пошаговой форме.

Чтобы создать Dynamic Link , создайте новый объект DynamicLink с его построителем, указав параметры Dynamic Link с помощью методов построителя. Затем вызовите buildDynamicLink или buildShortDynamicLink .

В следующем минимальном примере создается длинная Dynamic Link на https://www.example.com/ , которая открывается с помощью вашего приложения Android на Android и приложения com.example.ios на iOS:

Kotlin

val dynamicLink = Firebase.dynamicLinks.dynamicLink {
    link = Uri.parse("https://www.example.com/")
    domainUriPrefix = "https://example.page.link"
    // Open links with this app on Android
    androidParameters { }
    // Open links with com.example.ios on iOS
    iosParameters("com.example.ios") { }
}

val dynamicLinkUri = dynamicLink.uri

Java

DynamicLink dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://www.example.com/"))
        .setDomainUriPrefix("https://example.page.link")
        // Open links with this app on Android
        .setAndroidParameters(new DynamicLink.AndroidParameters.Builder().build())
        // Open links with com.example.ios on iOS
        .setIosParameters(new DynamicLink.IosParameters.Builder("com.example.ios").build())
        .buildDynamicLink();

Uri dynamicLinkUri = dynamicLink.getUri();

Чтобы создать короткую Dynamic Link , создайте DynamicLink таким же образом, а затем вызовите buildShortDynamicLink . Для создания короткой ссылки требуется сетевой вызов, поэтому вместо прямого возврата ссылки buildShortDynamicLink возвращает Task , который делает короткую ссылку доступной после завершения запроса. Например:

Kotlin

val shortLinkTask = Firebase.dynamicLinks.shortLinkAsync {
    link = Uri.parse("https://www.example.com/")
    domainUriPrefix = "https://example.page.link"
    // Set parameters
    // ...
}.addOnSuccessListener { (shortLink, flowchartLink) ->
    // You'll need to import com.google.firebase.dynamiclinks.component1 and
    // com.google.firebase.dynamiclinks.component2

    // Short link created
    processShortLink(shortLink, flowchartLink)
}.addOnFailureListener {
    // Error
    // ...
}

Java

Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://www.example.com/"))
        .setDomainUriPrefix("https://example.page.link")
        // Set parameters
        // ...
        .buildShortDynamicLink()
        .addOnCompleteListener(this, new OnCompleteListener<ShortDynamicLink>() {
            @Override
            public void onComplete(@NonNull Task<ShortDynamicLink> task) {
                if (task.isSuccessful()) {
                    // Short link created
                    Uri shortLink = task.getResult().getShortLink();
                    Uri flowchartLink = task.getResult().getPreviewLink();
                } else {
                    // Error
                    // ...
                }
            }
        });

По умолчанию короткие Dynamic Links генерируются с 17-значными суффиксами ссылок, что делает крайне маловероятным то, что кто-то сможет угадать действительную Dynamic Link . Если для вашего случая использования нет ничего плохого в том, что кто-то успешно угадает короткую ссылку, вы можете предпочесть генерировать суффиксы, длина которых должна быть уникальной, что вы можете сделать, передав ShortDynamicLink.Suffix.SHORT в метод buildShortDynamicLink . :

Kotlin

val shortLinkTask = Firebase.dynamicLinks.shortLinkAsync(ShortDynamicLink.Suffix.SHORT) {
    // Set parameters
    // ...
}

Java

Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        // ...
        .buildShortDynamicLink(ShortDynamicLink.Suffix.SHORT);
        // ...

Вы можете использовать API Dynamic Link Builder для создания Dynamic Links с любым из поддерживаемых параметров. Подробности см. в справочнике по API .

В следующем примере создается Dynamic Link с набором нескольких общих параметров:

Kotlin

val dynamicLink = Firebase.dynamicLinks.dynamicLink { // or Firebase.dynamicLinks.shortLinkAsync
    link = Uri.parse("https://www.example.com/")
    domainUriPrefix = "https://example.page.link"
    androidParameters("com.example.android") {
        minimumVersion = 125
    }
    iosParameters("com.example.ios") {
        appStoreId = "123456789"
        minimumVersion = "1.0.1"
    }
    googleAnalyticsParameters {
        source = "orkut"
        medium = "social"
        campaign = "example-promo"
    }
    itunesConnectAnalyticsParameters {
        providerToken = "123456"
        campaignToken = "example-promo"
    }
    socialMetaTagParameters {
        title = "Example of a Dynamic Link"
        description = "This link works whether the app is installed or not!"
    }
}

Java

DynamicLink dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://www.example.com/"))
        .setDomainUriPrefix("https://example.page.link")
        .setAndroidParameters(
                new DynamicLink.AndroidParameters.Builder("com.example.android")
                        .setMinimumVersion(125)
                        .build())
        .setIosParameters(
                new DynamicLink.IosParameters.Builder("com.example.ios")
                        .setAppStoreId("123456789")
                        .setMinimumVersion("1.0.1")
                        .build())
        .setGoogleAnalyticsParameters(
                new DynamicLink.GoogleAnalyticsParameters.Builder()
                        .setSource("orkut")
                        .setMedium("social")
                        .setCampaign("example-promo")
                        .build())
        .setItunesConnectAnalyticsParameters(
                new DynamicLink.ItunesConnectAnalyticsParameters.Builder()
                        .setProviderToken("123456")
                        .setCampaignToken("example-promo")
                        .build())
        .setSocialMetaTagParameters(
                new DynamicLink.SocialMetaTagParameters.Builder()
                        .setTitle("Example of a Dynamic Link")
                        .setDescription("This link works whether the app is installed or not!")
                        .build())
        .buildDynamicLink();  // Or buildShortDynamicLink()

Вы можете установить параметры Dynamic Link следующими способами:

Параметры Динамической связи
setLink

Ссылка, которую откроется ваше приложение. Укажите URL-адрес, который может обрабатывать ваше приложение (обычно это контент или полезная нагрузка приложения), который инициирует логику, специфичную для приложения (например, зачисление пользователю купона или отображение экрана приветствия). Эта ссылка должна представлять собой правильно отформатированный URL-адрес, иметь правильную URL-кодировку, использовать HTTP или HTTPS и не может быть другой динамической ссылкой.

setDomainUriPrefix Префикс URL-адреса Dynamic Link , который вы можете найти в консоли Firebase . Домен Dynamic Link выглядит следующим образом:
https://example.com/link
https://example.page.link
AndroidПараметры
УстановитьFallbackUrl Ссылка для открытия, когда приложение не установлено. Укажите это, чтобы сделать что-то кроме установки приложения из Play Store, когда оно не установлено, например открыть мобильную веб-версию контента или отобразить рекламную страницу вашего приложения.
setMinimumVersion versionCode минимальной версии вашего приложения, которая может открыть ссылку. Если установленное приложение имеет более старую версию, пользователь перенаправляется в Play Store для обновления приложения.
IosПараметры
setAppStoreId Идентификатор вашего приложения в App Store, используемый для отправки пользователей в App Store, когда приложение не установлено.
УстановитьFallbackUrl Ссылка для открытия, когда приложение не установлено. Укажите это, чтобы сделать что-то кроме установки приложения из App Store, когда оно не установлено, например открыть мобильную веб-версию контента или отобразить рекламную страницу вашего приложения.
setCustomScheme Пользовательская схема URL-адресов вашего приложения, если она определена как нечто иное, чем идентификатор пакета вашего приложения.
УстановитьIpadFallbackUrl Ссылка, которую можно открыть на iPad, когда приложение не установлено. Укажите это, чтобы сделать что-то кроме установки приложения из App Store, когда приложение не установлено, например открыть веб-версию контента или отобразить рекламную страницу вашего приложения.
setIpadBundleId Идентификатор пакета приложения iOS, который нужно использовать на iPad, чтобы открыть ссылку. Приложение должно быть подключено к вашему проекту на странице «Обзор» консоли Firebase .
setMinimumVersion Номер версии минимальной версии вашего приложения, которая может открыть ссылку. Этот флаг передается вашему приложению при его открытии, и ваше приложение должно решить, что с ним делать.
Навигационныеинформационные параметры
setForcedRedirectEnabled Если установлено значение «1», пропустите страницу предварительного просмотра приложения при открытии Dynamic Link и вместо этого перенаправьте в приложение или магазин. Страница предварительного просмотра приложения (включена по умолчанию) может более надежно направлять пользователей в наиболее подходящее место назначения, когда они открывают Dynamic Links в приложениях; однако, если вы ожидаете, что Dynamic Link будет открываться только в приложениях, которые могут надежно открывать Dynamic Links без этой страницы, вы можете отключить ее с помощью этого параметра. Этот параметр повлияет на поведение Dynamic Link только на iOS.
Социальные метатегиПараметры
setTitle Заголовок, который будет использоваться, когда Dynamic Link публикуется в публикации в социальной сети.
setОписание Описание, которое будет использоваться при публикации Dynamic Link в публикации в социальной сети.
setImageUrl URL-адрес изображения, связанного с этой ссылкой. Изображение должно быть не менее 300x200 пикселей и не более 300 КБ.
Параметры GoogleAnalytics
setSource
setMedium
setCampaign
SetTerm
setContent
Параметры аналитики Google Play. Эти параметры ( utm_source , utm_medium , utm_campaign , utm_term , utm_content ) передаются в Play Store, а также добавляются к полезной нагрузке ссылки.
Параметры ItunesConnectAnalytics
setProviderToken
setAffiliateToken
setCampaignToken
Параметры аналитики iTunes Connect. Эти параметры ( pt , at , ct ) передаются в App Store.

Чтобы сократить длинную Dynamic Link , укажите URL-адрес Dynamic Link с помощью setLongLink вместо установки параметров с помощью других методов компоновщика:

Kotlin

val shortLinkTask = Firebase.dynamicLinks.shortLinkAsync {
    longLink = Uri.parse(
        "https://example.page.link/?link=" +
            "https://www.example.com/&apn=com.example.android&ibn=com.example.ios",
    )
}.addOnSuccessListener { (shortLink, flowChartLink) ->
    // You'll need to import com.google.firebase.dynamiclinks.component1 and
    // com.google.firebase.dynamiclinks.component2

    // Short link created
    processShortLink(shortLink, flowChartLink)
}.addOnFailureListener {
    // Error
    // ...
}

Java

Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLongLink(Uri.parse("https://example.page.link/?link=https://www.example.com/&apn=com.example.android&ibn=com.example.ios"))
        .buildShortDynamicLink()
        .addOnCompleteListener(this, new OnCompleteListener<ShortDynamicLink>() {
            @Override
            public void onComplete(@NonNull Task<ShortDynamicLink> task) {
                if (task.isSuccessful()) {
                    // Short link created
                    Uri shortLink = task.getResult().getShortLink();
                    Uri flowchartLink = task.getResult().getPreviewLink();
                } else {
                    // Error
                    // ...
                }
            }
        });