Создание динамических ссылок с помощью C++

Вы можете создавать короткие и длинные Dynamic Links с помощью Firebase Dynamic Links API. 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++).

  1. В консоли Firebase откройте раздел Dynamic Links .
  2. Если вы еще не приняли условия обслуживания и не установили префикс URI для своих Dynamic Links , сделайте это при появлении соответствующего запроса.

    Если у вас уже есть префикс URI Dynamic Links , запишите его. Префикс URI для Dynamic Links необходимо указать при программном создании Dynamic Links .

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

    Если у вас уже есть префикс URI Dynamic Links , запишите его. При программном создании Dynamic Links необходимо указать домен для Dynamic Links .

  3. Клиентская библиотека Firebase Dynamic Links C++ использует пользовательские схемы URL-адресов в iOS для обработки ссылок. Для поддержки получения Dynamic Links необходимо добавить пользовательские схемы URL-адресов в приложение:
    1. Чтобы открыть конфигурацию проекта, дважды щёлкните по названию проекта в левом дереве. Выберите приложение в разделе «ЦЕЛИ» , затем перейдите на вкладку «Информация» и разверните раздел «Типы URL» .
    2. Нажмите кнопку «+» и добавьте схему URL для вашего обратного идентификатора клиента. Чтобы найти это значение, откройте файл конфигурации GoogleService-Info.plist и найдите ключ REVERSED_CLIENT_ID . Скопируйте значение этого ключа и вставьте его в поле «Схемы URL» на странице конфигурации. Остальные поля оставьте пустыми.
    3. Нажмите кнопку «+» и добавьте вторую схему 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"

Следующая часть зависит от вашей платформы:

Создайте firebase::App , передав среду JNI и ссылку на jobject в Java Activity в качестве аргументов:

app = ::firebase::App::Create(::firebase::AppOptions("APPLICATION NAME"), jni_env, activity);

Создайте 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());
  }
}