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

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