Tworzenie linków dynamicznych w C++

Za pomocą interfejsu API Firebase Dynamic Links możesz tworzyć krótkie lub długie Dynamic Links. Interfejs API wykorzystuje kilka opcjonalnych struktur parametrów do tworzenia linków. Krótkie linki można też tworzyć na podstawie wygenerowanych wcześniej długich linków. Firebase Dynamic Links generuje adres URL podobny do tego:

https://example.page.link/WXYZ

Pakiet SDK C++ działa zarówno na Androidzie, jak i na iOS, ale na każdej z tych platform wymaga dodatkowej konfiguracji.

Zanim zaczniesz

Zanim zaczniesz korzystać z Firebase Dynamic Links, musisz:

  • Zarejestruj projekt C++ i skonfiguruj go tak, aby korzystał z Firebase.

    Jeśli Twój projekt C++ korzysta już z Firebase, jest już zarejestrowany i skonfigurowany pod kątem Firebase.

  • Dodaj pakiet Firebase C++ SDK do projektu C++.

Pamiętaj, że dodanie Firebase do projektu C++ wymaga wykonania zadań zarówno w konsoli Firebase, jak i w otwartym projekcie C++ (np. pobierasz pliki konfiguracji Firebase z konsoli, a następnie przenosisz je do projektu C++).

Android

  1. W konsoli Firebase otwórz sekcję Dynamic Links.
  2. Jeśli nie zaakceptowano jeszcze warunków korzystania z usługi i nie ustawiono prefiksu identyfikatora URI dla Dynamic Links, zrób to, gdy pojawi się odpowiedni komunikat.

    Jeśli masz już prefiks identyfikatora URI Dynamic Links, zanotuj go. Podczas automatycznego tworzenia Dynamic Links musisz podać prefiks identyfikatora URI Dynamic Links.

  3. Zalecane: określ wzorce adresów URL dozwolone w precyzyjnych linkach i linkach zastępczych. Dzięki temu uniemożliwisz nieupoważnionym osobom tworzenie Dynamic Links, które przekierowują z Twojej domeny do witryn, nad którymi nie masz kontroli. Zobacz Zezwalanie na określone wzorce adresów URL.

iOS

  1. W konsoli Firebase otwórz sekcję Dynamic Links.
  2. Jeśli nie zaakceptowano jeszcze warunków korzystania z usługi i nie ustawiono prefiksu identyfikatora URI dla Dynamic Links, zrób to, gdy pojawi się odpowiedni komunikat.

    Jeśli masz już prefiks identyfikatora URI Dynamic Links, zanotuj go. Podczas automatycznego tworzenia Dynamic Links musisz podać domenę Dynamic Links.

  3. Biblioteka klienta Firebase Dynamic Links w C++ używa niestandardowych schematów URI adresów URL na iOS do przetwarzania linków. Aby aplikacja mogła odbierać Dynamic Links, musisz dodać do niej niestandardowe schematy URI adresów URL:
    1. Aby otworzyć konfigurację projektu, kliknij dwukrotnie nazwę projektu w widoku drzewa po lewej stronie. Wybierz aplikację w sekcji TARGETS (Cele), a następnie kliknij kartę Info (Informacje) i rozwiń sekcję URL Types (Typy adresów URL).
    2. Kliknij przycisk + i dodaj schemat URI adresu URL dla odwróconego identyfikatora klienta. Aby znaleźć tę wartość, otwórz plik konfiguracji GoogleService-Info.plist i poszukaj klucza REVERSED_CLIENT_ID. Skopiuj wartość tego klucza i wklej ją w polu Schematy adresów URL na stronie konfiguracji. Pozostałe pola pozostaw puste.
    3. Kliknij przycisk + i dodaj drugi schemat URI adresu URL. Jest on taki sam jak identyfikator pakietu aplikacji. Jeśli na przykład identyfikator pakietu to com.example.ios, wpisz tę wartość w polu Schematy adresów URL. Identyfikator pakietu aplikacji znajdziesz na karcie Ogólne w konfiguracji projektu (Tożsamość > Identyfikator pakietu).

Korzystanie z konsoli Firebase

Jeśli chcesz wygenerować pojedynczy Dynamic Link do celów testowych lub dla zespołu marketingowego, aby łatwo utworzyć link, który można wykorzystać na przykład w poście w mediach społecznościowych, najprostszym sposobem jest odwiedzenie konsoli Firebase i ręczne utworzenie linku za pomocą formularza.

Własne domeny

Możesz mieć większą kontrolę nad brandingiem Dynamic Link, używając własnej domeny zamiast subdomeny goo.gl lub page.link. Aby skonfigurować własną domenę dla projektu, postępuj zgodnie z tymi instrukcjami.

Korzystanie z interfejsu API Firebase Dynamic Links

Tworzenie i inicjowanie aplikacji

Zanim utworzysz Dynamic Links, musisz utworzyć i zainicjować obiekt firebase::App.

Dołącz plik nagłówka dla firebase::App:

#include "firebase/app.h"

Kolejna część różni się w zależności od platformy:

Android

Utwórz obiekt firebase::App, przekazując środowisko JNI i odwołanie jobject do aktywności Java jako argumenty:

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

iOS

Utwórz firebase::App:

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

Inicjowanie biblioteki Dynamic Links

Zanim utworzysz Dynamic Link, musisz najpierw zainicjować bibliotekę Dynamic Links:

::firebase::dynamic_links::Initialize(app, null);

Tworzę długi parametr Dynamic Link na podstawie parametrów

Aby utworzyć link dynamiczny, utwórz obiekt DynamicLinkComponents, ustaw dowolne opcjonalne elementy na potrzeby dodatkowej konfiguracji i przekaż go do dynamic_links::GetShortLink lub dynamic_links::GetLongLink.

Poniższy krótki przykład tworzy długi link dynamiczny do strony https://www.example.com/, który otwiera się w aplikacji na Androida com.example.android.package_name i aplikacji na 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);

Tworzenie filmu Short Dynamic Link

Aby utworzyć krótki link dynamiczny, przekaż wcześniej wygenerowany długi link do GetShortLink lub utwórz DynamicLinkComponents w taki sam sposób jak powyżej.

GetShortLink opcjonalnie przyjmuje dodatkowy parametr konfiguracji DynamicLinkOptions z PathLength. Pozwala to kontrolować sposób generowania linku. Wygenerowanie krótkiego linku wymaga żądania sieciowego do backendu Firebase, więc metoda GetShortLink jest asynchroniczna i zwraca Future<GeneratedLink>.

Przykład:

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);

Jeśli Twój program ma pętlę aktualizacji, która działa regularnie (np. 30 lub 60 razy na sekundę), możesz sprawdzać wyniki raz na aktualizację:

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());
  }
}