С помощью API Firebase Dynamic Links можно создавать короткие или длинные Dynamic Links . API принимает несколько необязательных параметров для построения ссылок. Короткие ссылки также можно создавать на основе ранее сгенерированной длинной ссылки. Firebase Dynamic Links генерирует URL-адрес следующего вида:
https://example.page.link/WXYZ
C++ SDK работает как с Android, так и с iOS, но для каждой платформы требуется дополнительная настройка.
Прежде чем начать
Прежде чем использовать Firebase Dynamic Links , вам необходимо:
Зарегистрируйте свой проект на C++ и настройте его для использования Firebase.
Если ваш проект на C++ уже использует Firebase, значит, он уже зарегистрирован и настроен для работы с Firebase.
Добавьте Firebase C++ SDK в свой проект на C++.
Обратите внимание, что добавление Firebase в ваш проект C++ включает в себя задачи как в консоли Firebase , так и в открытом проекте C++ (например, вы загружаете файлы конфигурации Firebase из консоли, а затем перемещаете их в свой проект C++).
Android
- В консоли Firebase откройте раздел Dynamic Links .
Если вы еще не приняли условия предоставления услуг и не установили префикс URI для ваших Dynamic Links , сделайте это, когда появится соответствующий запрос.
Если у вас уже есть префикс URI Dynamic Links , запишите его. Вам необходимо указать префикс URI Dynamic Links при программном создании Dynamic Links .

- Рекомендуется : Укажите разрешенные шаблоны URL-адресов для ваших прямых ссылок и резервных ссылок. Это предотвратит создание неавторизованными лицами Dynamic Links , перенаправляющих с вашего домена на сайты, которые вы не контролируете. См. раздел «Разрешить определенные шаблоны URL-адресов» .
iOS
- В консоли Firebase откройте раздел Dynamic Links .
Если вы еще не приняли условия предоставления услуг и не установили префикс URI для ваших Dynamic Links , сделайте это, когда появится соответствующий запрос.
Если у вас уже есть префикс URI Dynamic Links , запишите его. Вам необходимо указать домен Dynamic Links при программном создании Dynamic Links .

- Клиентская библиотека Firebase Dynamic Links на C++ использует пользовательские схемы URL-адресов в iOS для обработки ссылок. Для поддержки приема Dynamic Links необходимо добавить пользовательские схемы URL-адресов в ваше приложение.
- Чтобы открыть конфигурацию проекта, дважды щелкните имя проекта в левом древовидном представлении. Выберите свое приложение в разделе «ЦЕЛИ» , затем перейдите на вкладку «Информация» и разверните раздел «Типы URL» .
- Нажмите кнопку «+» и добавьте схему URL для вашего обратного идентификатора клиента. Чтобы найти это значение, откройте конфигурационный файл
и найдите ключGoogleService-Info.plist REVERSED_CLIENT_ID. Скопируйте значение этого ключа и вставьте его в поле «Схемы URL» на странице конфигурации. Оставьте остальные поля пустыми. - Нажмите кнопку «+» и добавьте вторую схему URL. Она должна совпадать с идентификатором пакета вашего приложения. Например, если идентификатор вашего пакета —
com.example.ios, введите это значение в поле «Схемы URL» . Идентификатор пакета вашего приложения можно найти на вкладке «Общие» в конфигурации проекта ( Идентификация > Идентификатор пакета ).
Используйте консоль Firebase
Если вам нужно сгенерировать одну Dynamic Link , например, для тестирования или для того, чтобы ваша маркетинговая команда могла легко создавать ссылки для использования в публикациях в социальных сетях, самый простой способ — зайти в консоль Firebase и создать ее вручную, следуя пошаговой инструкции.
Пользовательские домены
Вы можете получить больший контроль над брендингом ваших Dynamic Link , используя собственный домен вместо поддомена goo.gl или page.link . Следуйте этим инструкциям , чтобы настроить собственный домен для вашего проекта.
Использование API Firebase Dynamic Links
Создайте и инициализируйте приложение.
Прежде чем создавать Dynamic Links , вам необходимо создать и инициализировать объект firebase::App .
Включите заголовочный файл для firebase::App :
#include "firebase/app.h"
Следующая часть зависит от вашей платформы:
Android
Создайте firebase::App , передав в качестве аргументов среду JNI и ссылку на jobject Java Activity:
app = ::firebase::App::Create(::firebase::AppOptions("APPLICATION NAME"), jni_env, activity);
iOS
Создайте приложение firebase::App :
app = ::firebase::App::Create(::firebase::AppOptions("APPLICATION NAME"));
Инициализация библиотеки Dynamic Links
Перед созданием Dynamic Link необходимо сначала инициализировать библиотеку Dynamic Links :
::firebase::dynamic_links::Initialize(app, null);
Создание длинной Dynamic Link на основе параметров
Для создания динамической ссылки создайте объект DynamicLinkComponents, задав любой из необязательных параметров для дополнительной настройки, и передайте его в dynamic_links::GetShortLink или dynamic_links::GetLongLink .
Следующий минимальный пример создает длинную динамическую ссылку на https://www.example.com/, которая открывается с вашим Android-приложением com.example.android.package_name и iOS-приложением com.example.ios:
firebase::dynamic_links::IOSParameters ios_parameters("com.example.ios"); firebase::dynamic_links::AndroidParameters android_parameters( "com.example.android.package_name"); firebase::dynamic_links::DynamicLinkComponents components( "https://www.example.com/", "example.page.link"); components.android_parameters = &android_parameters; components.ios_parameters = &ios_parameters; firebase::dynamic_links::GeneratedDynamicLink long_link = firebase::dynamic_links::GetLongLink(components);
Создание короткой Dynamic Link
Для создания короткой динамической ссылки передайте ранее сгенерированную длинную ссылку в GetShortLink или создайте DynamicLinkComponents тем же способом, что и выше.
GetShortLink опционально принимает дополнительный параметр конфигурации DynamicLinkOptions с PathLength ; это позволяет управлять способом генерации ссылки. Для генерации короткой ссылки требуется сетевой запрос к бэкэнду Firebase, поэтому GetShortLink является асинхронной функцией, возвращающей объект Future<GeneratedLink> .
Например:
firebase::dynamic_links::DynamicLinkOptions short_link_options; short_link_options.path_length = firebase::dynamic_links::kPathLengthShort; firebase::Future<firebase::dynamic_links::GeneratedDynamicLink> result = firebase::dynamic_links::GetShortLink(components, short_link_options);
Если в вашей программе есть цикл обновления, который выполняется регулярно (например, 30 или 60 раз в секунду), вы можете проверять результаты один раз после каждого обновления:
if (result.status() == firebase::kFutureStatusComplete) { if (result.error() == firebase::dynamic_links::kErrorCodeSuccess) { firebase::dynamic_links::GeneratedDynamicLink link = *result.result(); printf("Create short link succeeded: %s\n", link.url.c_str()); } else { printf("Created short link failed with error '%s'\n", result.error_message()); } }