С помощью 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» на странице конфигурации. Оставьте остальные поля пустыми. - Click the + button, and add a second URL scheme. This one is the same as your app's bundle ID. For example, if your bundle ID is
com.example.ios, type that value into the URL Schemes box. You can find your app's bundle ID in the General tab of the project configuration ( Identity > Bundle Identifier ).
Используйте консоль 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()); } }