Tworzenie linków dynamicznych w C++

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

https://example.page.link/WXYZ

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

Zanim zaczniesz

Zanim zaczniesz korzystać z Firebase Dynamic Links, musisz:

  • Zarejestruj projekt C++ i skonfiguruj go pod kątem używania Firebase.

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

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

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

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

    Jeśli masz już Dynamic Links prefiks URI, zanotuj go. Podczas programowego 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. W ten sposób uniemożliwisz nieuprawnionym osobom tworzenie rekordów 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.
  1. W konsoli Firebase otwórz sekcję Dynamic Links.
  2. Jeśli nie masz jeszcze zaakceptowanych warunków korzystania z usługi i ustawionego prefiksu URI dla Dynamic Links, zrób to, gdy pojawi się odpowiedni komunikat.

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

  3. Biblioteka klienta C++ Firebase Dynamic Links używa niestandardowych schematów URL-i w iOS do przetwarzania linków. Aby obsługiwać odbieranie Dynamic Links, musisz dodać do aplikacji niestandardowe schematy adresów URL:
    1. Aby otworzyć konfigurację projektu, w widoku drzewa po lewej stronie kliknij dwukrotnie nazwę projektu. W sekcji CELE wybierz aplikację, a potem kliknij kartę Informacje i rozwiń sekcję Typy adresów URL.
    2. Kliknij przycisk + i dodaj schemat adresu URL dla odwróconego identyfikatora klienta. Aby znaleźć tę wartość, otwórz plik konfiguracyjny GoogleService-Info.plist i poszukaj klucza REVERSED_CLIENT_ID. Skopiuj wartość tego klucza i wklej ją w polu Schematy URL na stronie konfiguracji. Pozostałe pola pozostaw puste.
    3. Kliknij przycisk + i dodaj drugi schemat 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 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, np. na potrzeby testów lub aby umożliwić zespołowi marketingowemu łatwe tworzenie linków, które można wykorzystać np. w postach w mediach społecznościowych, najprostszym sposobem będzie otwarcie Firebasekonsoli i ręczne utworzenie go za pomocą formularza krok po kroku.

Domeny niestandardowe

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ć domenę niestandardową 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łówkowy dla firebase::App:

#include "firebase/app.h"

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

AndroidiOS

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

Utwórz firebase::App:

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

Zainicjowanie biblioteki Dynamic Links

Przed utworzeniem Dynamic Link musisz najpierw zainicjować bibliotekę Dynamic Links:

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

Tworzenie długiego Dynamic Link na podstawie parametrów

Aby utworzyć Dynamic Link, utwórz obiekt DynamicLinkComponents, ustawiając dowolne opcjonalne elementy w celu dodatkowej konfiguracji, i przekaż go do funkcji dynamic_links::GetShortLink lub dynamic_links::GetLongLink.

Poniższy przykład tworzy długi dynamiczny link do 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 dynamiczny link, przekaż wcześniej wygenerowany długi link do GetShortLink lub utwórz go DynamicLinkComponents w taki sam sposób jak powyżej.

GetShortLink opcjonalnie przyjmuje dodatkowy parametr DynamicLinkOptions configPathLength, który pozwala kontrolować sposób generowania linku. Wygenerowanie krótkiego linku wymaga wysłania żądania sieciowego do backendu Firebase, więc funkcja GetShortLink jest asynchroniczna i zwraca obiekt 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 program ma pętlę aktualizacji, która jest uruchamiana 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());
  }
}