С помощью API Firebase Dynamic Links Builder можно создавать короткие или длинные Dynamic Links . Этот API принимает либо длинную Dynamic Link , либо объект, содержащий параметры Dynamic Link , и возвращает URL-адреса, подобные приведенным ниже примерам:
https://example.com/link/WXYZ https://example.page.link/WXYZ
Настройте Firebase и Dynamic Links SDK.
Прежде чем создавать Dynamic Links в своем Android-приложении, необходимо подключить Firebase SDK. Если ваше приложение настроено на прием Dynamic Links , вы уже выполнили эти шаги и можете пропустить этот раздел.
Если вы еще этого не сделали, добавьте Firebase в свой Android-проект .
При регистрации приложения укажите ключ подписи SHA-1. Если вы используете App Links, укажите также ключ SHA-256.
В файле 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:34.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:23.0.0' }
- В консоли Firebase откройте раздел Dynamic Links .
Если вы еще не приняли условия обслуживания и не указали домен для своих Dynamic Links , сделайте это, когда появится соответствующий запрос.
Если у вас уже есть домен Dynamic Links , запишите его. Вам необходимо указать домен Dynamic Links при программном создании Dynamic Links .

- Рекомендуется : Укажите разрешенные шаблоны URL-адресов для ваших прямых ссылок и резервных ссылок. Это предотвратит создание неавторизованными лицами Dynamic Links , перенаправляющих с вашего домена на сайты, которые вы не контролируете. См. раздел «Разрешить определенные шаблоны URL-адресов» .
Используйте консоль Firebase
Если вам нужно сгенерировать одну Dynamic Link , например, для тестирования или для того, чтобы ваша маркетинговая команда могла легко создавать ссылки для использования в публикациях в социальных сетях, самый простой способ — зайти в консоль Firebase и создать ее вручную, следуя пошаговой инструкции.
Создайте Dynamic Link на основе параметров.
Для создания Dynamic Link создайте новый объект DynamicLink с его конструктором (Builder), указав параметры Dynamic Link с помощью методов конструктора. Затем вызовите buildDynamicLink или buildShortDynamicLink .
Следующий минимальный пример создает длинную Dynamic Link на https://www.example.com/ , которая открывается вашим приложением для 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); // ...
Dynamic Link
Вы можете использовать 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 можно задать следующими способами:
| Параметры DynamicLink | |
|---|---|
| setLink | Ссылка, которую будет открывать ваше приложение. Укажите URL-адрес, который может обрабатывать ваше приложение, как правило, это содержимое или полезная нагрузка приложения, которая запускает специфическую для приложения логику (например, начисление пользователю купона или отображение приветственного экрана). Эта ссылка должна быть правильно отформатированным URL-адресом, корректно закодированным в формате URL, использовать протокол HTTP или HTTPS и не может быть другой динамической ссылкой. |
| setDomainUriPrefix | Префикс вашего Dynamic Link , который можно найти в консоли Firebase . Домен Dynamic Link выглядит следующим образом: https://example.com/link https://example.page.link |
| AndroidParameters | |
|---|---|
| setFallbackUrl | Ссылка, которая будет открываться, если приложение не установлено. Укажите это, чтобы выполнить какое-либо действие, отличное от установки приложения из Play Store, если приложение не установлено, например, открыть мобильную веб-версию контента или отобразить рекламную страницу вашего приложения. |
| setMinimumVersion | versionCode это минимальная версия вашего приложения, которая позволяет открыть ссылку. Если установленное приложение имеет более старую версию, пользователь будет перенаправлен в Play Store для обновления приложения. |
| IosParameters | |
|---|---|
| setAppStoreId | Идентификатор вашего приложения в App Store, используемый для перенаправления пользователей в App Store, если приложение не установлено. |
| setFallbackUrl | Ссылка, которая будет открываться, если приложение не установлено. Укажите это, чтобы выполнить какое-либо действие, отличное от установки приложения из App Store, если приложение не установлено, например, открыть мобильную веб-версию контента или отобразить рекламную страницу вашего приложения. |
| setCustomScheme | Схема пользовательских URL-адресов вашего приложения, если она определена как нечто отличное от идентификатора пакета вашего приложения. |
| setIpadFallbackUrl | Ссылка, которая будет открываться на iPad, если приложение не установлено. Укажите это, чтобы выполнить какое-либо действие, отличное от установки приложения из App Store, если приложение не установлено, например, открыть веб-версию контента или отобразить рекламную страницу вашего приложения. |
| setIpadBundleId | Идентификатор пакета iOS-приложения, которое будет использоваться на iPad для открытия ссылки. Приложение должно быть подключено к вашему проекту через страницу «Обзор» в консоли Firebase . |
| setMinimumVersion | Номер версии минимальной версии вашего приложения, которая может открыть ссылку. Этот флаг передается вашему приложению при открытии ссылки, и ваше приложение должно решить, что с ним делать. |
| Параметры навигации | |
|---|---|
| setForcedRedirectEnabled | Если установлено значение «1», страница предварительного просмотра приложения будет пропущена при открытии Dynamic Link , и вместо этого будет осуществлено перенаправление в приложение или магазин. Страница предварительного просмотра приложения (включена по умолчанию) может более надежно направлять пользователей на наиболее подходящий ресурс при открытии Dynamic Links в приложениях; однако, если вы ожидаете, что Dynamic Link будет открываться только в приложениях, которые могут надежно открывать Dynamic Links без этой страницы, вы можете отключить ее с помощью этого параметра. Этот параметр повлияет на поведение Dynamic Link только на iOS. |
| SocialMetaTagParameters | |
|---|---|
| setTitle | Заголовок, используемый при публикации Dynamic Link в социальных сетях. |
| setDescription | Описание, используемое при публикации Dynamic Link в социальных сетях. |
| setImageUrl | URL изображения, связанного с этой ссылкой. Размер изображения должен быть не менее 300x200 пикселей, а размер файла — менее 300 КБ. |
| Параметры Google Analytics | |
|---|---|
| setSource setMedium setCampaign setTerm setContent | Параметры аналитики Google Play. Эти параметры ( utm_source , utm_medium , utm_campaign , utm_term , utm_content ) передаются в Play Store, а также добавляются к полезной нагрузке ссылки. |
| ItunesConnectAnalyticsParameters | |
|---|---|
| setProviderToken setAffiliateToken setCampaignToken | Параметры аналитики iTunes Connect. Эти параметры ( pt , at , ct ) передаются в App Store. |
Сокращение длинной Dynamic Link
Чтобы сократить длинную 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 // ... } } });