С помощью Firebase Dynamic Links API можно создавать короткие или длинные Dynamic Links. Для создания ссылок API принимает несколько необязательных структур параметров. Короткие ссылки также можно создавать на основе ранее сгенерированных длинных ссылок. Firebase Dynamic Links генерирует URL, подобный следующему:
https://example.page.link/WXYZ
C++ SDK работает как на Android, так и на iOS, но для каждой платформы требуется дополнительная настройка.
Подготовка
Чтобы использовать Firebase Dynamic Links, необходимо:
Зарегистрируйте проект C++ и настройте его для использования Firebase.
Если в проекте уже используется Firebase, можете пропустить этот шаг.
Добавьте Firebase C++ SDK в проект C++.
Обратите внимание, что для добавления Firebase в проект C++ нужно выполнить действия как в консоли Firebase, так и в вашем открытом проекте C++. Например, вам потребуется скачать файлы конфигурации Firebase из консоли, а затем переместить их в проект C++.
Android
- В консоли Firebase откройте раздел Dynamic Links.
Если вы ещё не приняли условия использования и не задали префикс URI для Dynamic Links, сделайте это, когда появится запрос.
Если у вас уже есть префикс URI Dynamic Links, запишите его. При программном создании Dynamic Links необходимо указать префикс URI 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:
- Чтобы открыть конфигурацию проекта, нажмите дважды на название проекта в дереве аккаунта слева. Выберите приложение в разделе TARGETS (ЦЕЛИ), откройте вкладку Info (Информация) и разверните раздел URL Types (Типы URL).
- Нажмите кнопку + и добавьте схему URL для обратного идентификатора клиента. Чтобы найти это значение, откройте файл конфигурации
и найдите ключGoogleService-Info.plist REVERSED_CLIENT_ID. Скопируйте значение этого ключа и вставьте его в поле URL Schemes (Схемы URL) на странице конфигурации. Другие поля оставьте пустыми. - Нажмите кнопку + и добавьте вторую схему URL. Он совпадает с идентификатором пакета приложения. Например, если идентификатор пакета –
com.example.ios, введите это значение в поле URL Schemes (Схемы URL). Идентификатор пакета приложения можно найти на вкладке General (Общие) в настройках проекта (Identity (Идентификатор) > Bundle Identifier (Идентификатор пакета)).
Используйте консоль Firebase
Если вы хотите создать одну ссылку Dynamic Link для тестирования или для маркетинговой команды, чтобы она могла легко создать ссылку, которую можно использовать, например, в публикации в социальных сетях, проще всего перейти в консоль Firebase и создать ее вручную, следуя пошаговой форме.
Пользовательские домены
Вы можете использовать собственный домен вместо субдомена goo.gl или page.link, чтобы лучше контролировать брендинг Dynamic Link. Следуйте этим инструкциям, чтобы настроить пользовательский домен для своего проекта.
Использование Firebase Dynamic Links API
Создание и инициализация приложения
Прежде чем создавать Dynamic Links, необходимо создать и инициализировать объект firebase::App.
Добавьте заголовочный файл для firebase::App:
#include "firebase/app.h"
Дальнейшие действия зависят от платформы:
Android
Создайте объект firebase::App, передав указатель на среду JNI и ссылку jobject на объект activity в Java в виде аргументов:
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()); } }