Создайте динамические ссылки в приложении Flutter

Вы можете создавать короткие и длинные динамические ссылки с помощью API Firebase Dynamic Links Builder. Этот API принимает как длинные динамические ссылки, так и объекты с параметрами динамических ссылок и возвращает URL-адреса, подобные следующим:

https://example.com/link/WXYZ
https://example.page.link/WXYZ

Прежде чем создавать динамические ссылки в приложении для Android, необходимо подключить Firebase SDK. Если ваше приложение настроено на использование динамических ссылок, вы уже выполнили эти шаги и можете пропустить этот раздел.

  1. Установите и инициализируйте Firebase SDKs для Flutter, если вы еще этого не сделали.

  2. Из корневого каталога вашего проекта Flutter выполните следующую команду, чтобы установить плагин Dynamic Links:

    flutter pub add firebase_dynamic_links
    
  3. Если вы разрабатываете приложение для Android, откройте страницу настроек проекта в консоли Firebase и убедитесь, что вы указали ключ подписи SHA-1. Если вы используете App Links, укажите также ключ SHA-256.

  4. В консоли Firebase откройте раздел Динамические ссылки .

    1. Если вы еще не настроили домен для динамических ссылок, нажмите кнопку «Начать» и следуйте инструкциям.

      Если у вас уже есть домен Dynamic Links, обратите на это внимание. Вам необходимо указать домен Dynamic Links при программном создании динамических ссылок.

    2. Рекомендуется : в меню «Дополнительно» (⋮) укажите шаблоны 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);

Параметры Dynamic Link можно задать следующими способами:

Параметры DynamicLink
setLink Ссылка, которую откроет ваше приложение. Укажите URL-адрес, который может обрабатывать ваше приложение. Обычно это контент или полезная нагрузка приложения, которая запускает специфичную для приложения логику (например, предоставление пользователю купона или отображение приветственного экрана). Эта ссылка должна иметь корректный формат URL, быть правильно закодирована в URL, использовать протокол HTTP или HTTPS и не может быть другой динамической ссылкой.
setDomainUriPrefix Префикс URL-адреса динамической ссылки, который можно найти в консоли Firebase. Домен динамической ссылки выглядит следующим образом:
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 Номер минимальной версии вашего приложения, в которой может открыться ссылка. Этот флаг передаётся приложению при открытии, и оно само решает, что с ним делать.
Параметры навигации
setForcedRedirectEnabled Если установлено значение «1», страница предварительного просмотра приложения будет пропущена при открытии динамической ссылки и вместо этого будет перенаправлена в приложение или магазин. Страница предварительного просмотра приложения (включена по умолчанию) может более надёжно перенаправлять пользователей в наиболее подходящее место назначения при открытии динамических ссылок в приложениях. Однако, если вы ожидаете, что динамическая ссылка будет открываться только в приложениях, которые могут открывать динамические ссылки без этой страницы, вы можете отключить её с помощью этого параметра. Этот параметр влияет на поведение динамической ссылки только в iOS.
SocialMetaTagParameters
setTitle Заголовок, который будет использоваться при публикации динамической ссылки в социальной сети.
setDescription Описание, которое будет использоваться при публикации динамической ссылки в социальной сети.
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.