С помощью API Firebase Dynamic Links Builder можно создавать короткие или длинные динамические ссылки. Этот API принимает либо длинную динамическую ссылку, либо объект, содержащий параметры динамической ссылки, и возвращает URL-адреса, подобные приведенным ниже примерам:
https://example.com/link/WXYZ
https://example.page.link/WXYZ
Настройте Firebase и Dynamic Links SDK.
Прежде чем создавать динамические ссылки в своем Android-приложении, необходимо подключить Firebase SDK. Если ваше приложение настроено на прием динамических ссылок, вы уже выполнили эти шаги и можете пропустить этот раздел.
Установите и инициализируйте SDK Firebase для Flutter, если вы еще этого не сделали.
Для установки плагина Dynamic Links выполните следующую команду из корневого каталога вашего Flutter-проекта:
flutter pub add firebase_dynamic_linksЕсли вы разрабатываете Android-приложение, откройте страницу настроек проекта в консоли Firebase и убедитесь, что вы указали свой ключ подписи SHA-1. Если вы используете App Links, укажите также свой ключ SHA-256.
В консоли Firebase откройте раздел «Динамические ссылки» .
Если вы еще не настроили домен для динамических ссылок, нажмите кнопку «Начать» и следуйте инструкциям.
Если у вас уже есть домен для динамических ссылок, запишите его. Вам необходимо указать домен для динамических ссылок при программном создании динамических ссылок.

Рекомендуется : В меню «Дополнительно» (⋮) укажите разрешенные шаблоны URL-адресов для ваших прямых ссылок и резервных ссылок. Таким образом, вы предотвратите создание неавторизованными лицами динамических ссылок, перенаправляющих с вашего домена на сайты, которые вы не контролируете.
См. раздел «Разрешить определенные шаблоны URL-адресов» .
Создайте динамическую ссылку на основе параметров.
Для создания динамической ссылки создайте новый объект DynamicLinkParameters и передайте его в функции buildLink() или buildShortLink() .
Следующий минимальный пример создает длинную динамическую ссылку на https://www.example.com/ , которая открывается с помощью com.example.app.android на Android и приложения com.example.app.ios на iOS:
final dynamicLinkParams = DynamicLinkParameters(
link: Uri.parse("https://www.example.com/"),
uriPrefix: "https://example.page.link",
androidParameters: const AndroidParameters(packageName: "com.example.app.android"),
iosParameters: const IOSParameters(bundleId: "com.example.app.ios"),
);
final dynamicLink =
await FirebaseDynamicLinks.instance.buildLink(dynamicLinkParams);
Для создания короткой динамической ссылки передайте объект DynamicLinkParameters в buildShortLink() . Для создания короткой ссылки требуется сетевой вызов. Например:
final dynamicLinkParams = DynamicLinkParameters(
link: Uri.parse("https://www.example.com/"),
uriPrefix: "https://example.page.link",
androidParameters: const AndroidParameters(packageName: "com.example.app.android"),
iosParameters: const IOSParameters(bundleId: "com.example.app.ios"),
);
final dynamicLink =
await FirebaseDynamicLinks.instance.buildShortLink(dynamicLinkParams);
По умолчанию короткие динамические ссылки генерируются с суффиксами длиной всего в несколько символов. Хотя это делает ссылки более компактными, это также создает возможность для того, чтобы кто-то мог угадать допустимую короткую ссылку. Часто в этом нет ничего страшного, поскольку ссылка ведет к общедоступной информации.
Однако, если ваши короткие ссылки ведут к информации, специфичной для пользователя, вам следует создавать более длинные ссылки с 17-символьными суффиксами, которые сделают крайне маловероятным угадывание допустимой динамической ссылки. Для этого передайте ShortDynamicLinkType.unguessable методу buildShortLink() :
final unguessableDynamicLink = await FirebaseDynamicLinks.instance.buildShortLink(
dynamicLinkParams,
shortLinkType: ShortDynamicLinkType.unguessable,
);
Динамические параметры связи
Вы можете использовать API Dynamic Link Builder для создания динамических ссылок с любым из поддерживаемых параметров. См. справочник по API .
В следующем примере создается динамическая ссылка с несколькими заданными общими параметрами:
final dynamicLinkParams = DynamicLinkParameters(
link: Uri.parse("https://www.example.com/"),
uriPrefix: "https://example.page.link",
androidParameters: const AndroidParameters(
packageName: "com.example.app.android",
minimumVersion: 30,
),
iosParameters: const IOSParameters(
bundleId: "com.example.app.ios",
appStoreId: "123456789",
minimumVersion: "1.0.1",
),
googleAnalyticsParameters: const GoogleAnalyticsParameters(
source: "twitter",
medium: "social",
campaign: "example-promo",
),
socialMetaTagParameters: SocialMetaTagParameters(
title: "Example of a Dynamic Link",
imageUrl: Uri.parse("https://example.com/image.png"),
),
);
final dynamicLink =
await FirebaseDynamicLinks.instance.buildShortLink(dynamicLinkParams);
Параметры динамической связи можно задать следующими способами:
| Параметры DynamicLink | |
|---|---|
| setLink | Ссылка, которую будет открывать ваше приложение. Укажите URL-адрес, который может обрабатывать ваше приложение, как правило, это содержимое или полезная нагрузка приложения, которая запускает специфическую для приложения логику (например, начисление пользователю купона или отображение приветственного экрана). Эта ссылка должна быть правильно отформатированным URL-адресом, корректно закодированным в формате URL, использовать протокол HTTP или HTTPS и не может быть другой динамической ссылкой. |
| setDomainUriPrefix | Префикс вашего динамического URL-адреса, который можно найти в консоли Firebase. Домен динамической ссылки выглядит следующим образом: 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», страница предварительного просмотра приложения будет пропущена при открытии динамической ссылки, и вместо этого будет осуществлено перенаправление в приложение или магазин. Страница предварительного просмотра приложения (включена по умолчанию) может более надежно направлять пользователей на наиболее подходящий ресурс при открытии динамических ссылок в приложениях; однако, если вы ожидаете, что динамическая ссылка будет открываться только в приложениях, которые могут надежно открывать динамические ссылки без этой страницы, вы можете отключить ее с помощью этого параметра. Этот параметр повлияет на поведение динамической ссылки только на iOS. |
| SocialMetaTagParameters | |
|---|---|
| setTitle | Заголовок, используемый при публикации динамической ссылки в социальных сетях. |
| setDescription | Описание, используемое при публикации динамической ссылки в социальных сетях. |
| 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. |