С помощью 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, который может обрабатывать ваше приложение. Обычно это контент или полезная нагрузка приложения, которая запускает логику приложения (например, начисление пользователю купона или показ экрана приветствия). Ссылка должна быть правильно отформатированным 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`) передаются в магазин приложений. |