Вы можете создавать короткие и длинные Dynamic Links с помощью API Firebase Dynamic Links Builder. Этот API принимает как длинные Dynamic Link , так и объекты с параметрами Dynamic Link и возвращает URL-адреса, подобные следующим:
https://example.com/link/WXYZ https://example.page.link/WXYZ
Set up Firebase and the 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.0.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 и создать ссылку вручную, следуя пошаговой форме.
Create a Dynamic Link from parameters
Чтобы создать Dynamic Link , создайте новый объект DynamicLink
с его Builder, указав параметры Dynamic Link с помощью методов Builder. Затем вызовите 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); // ...
Параметры 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 parameters | |
---|---|
SetLink | Ссылка, которую откроет ваше приложение. Укажите URL-адрес, который может обрабатывать ваше приложение. Обычно это контент или полезная нагрузка приложения, которая запускает специфичную для приложения логику (например, предоставление пользователю купона или отображение приветственного экрана). Эта ссылка должна иметь корректный формат URL, быть правильно закодирована в URL, использовать протокол HTTP или HTTPS и не может быть другой динамической ссылкой. |
setDomainUriPrefix | Префикс URL-адреса Dynamic Link , который можно найти в консоли Firebase . Домен Dynamic Link выглядит следующим образом: https://example.com/link https://example.page.link |
AndroidParameters | |
---|---|
setFallbackUrl | Ссылка, которая открывается, когда приложение не установлено. Укажите этот параметр, чтобы выполнить действие, отличное от установки приложения из Play Маркета, когда оно не установлено, например, открыть мобильную веб-версию контента или отобразить рекламную страницу вашего приложения. |
SetMinimumversion | versionCode минимальной версии вашего приложения, в которой можно открыть ссылку. Если установлена более старая версия приложения, пользователь перейдет в Play Маркет для обновления. |
IosParameters | |
---|---|
SetAppStoreID | Идентификатор вашего приложения в App Store, используемый для перенаправления пользователей в App Store, когда приложение не установлено. |
setfallbackurl | Ссылка, которая открывается, когда приложение не установлено. Укажите этот параметр, чтобы выполнить действие, отличное от установки приложения из App Store, когда оно не установлено, например, открыть мобильную веб-версию контента или отобразить рекламную страницу вашего приложения. |
setCustomScheme | Пользовательская схема URL вашего приложения, если она определена как нечто иное, чем идентификатор пакета вашего приложения |
setIpadFallbackUrl | Ссылка, которая открывается на iPad, если приложение не установлено. Укажите этот параметр, чтобы приложение выполняло какие-либо действия, помимо установки из App Store, когда оно не установлено, например, открывало веб-версию контента или отображало рекламную страницу вашего приложения. |
Setipadbundleid | Идентификатор пакета приложения iOS, который будет использоваться на iPad для открытия ссылки. Приложение должно быть подключено к вашему проекту на странице «Обзор» консоли Firebase . |
setMinimumVersion | Номер минимальной версии вашего приложения, в которой может открыться ссылка. Этот флаг передаётся приложению при открытии, и оно само решает, что с ним делать. |
NavigationInfoParameters | |
---|---|
setForcedRedirectEnabled | Если установлено значение «1», страница предварительного просмотра приложения будет пропущена при открытии Dynamic Link и вместо этого будет перенаправлена в приложение или магазин. Страница предварительного просмотра приложения (включена по умолчанию) может более надёжно перенаправлять пользователей в наиболее подходящее место назначения при открытии Dynamic Links в приложениях. Однако, если вы ожидаете, что Dynamic Link будет открываться только в приложениях, которые могут открывать Dynamic Links без этой страницы, вы можете отключить её с помощью этого параметра. Этот параметр влияет на поведение Dynamic Link только в iOS. |
SocialMetatagParameters | |
---|---|
Поселение | Заголовок, который будет использоваться при публикации Dynamic Link в социальной сети. |
setDescription | Описание, которое будет использоваться при публикации 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 и добавляются к полезной нагрузке ссылки. |
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 // ... } } });