Crea collegamenti dinamici con C++

Puoi creare collegamenti dinamici brevi o lunghi con l'API Firebase Dynamic Links. L'API accetta diverse strutture di parametri opzionali per creare collegamenti. È inoltre possibile creare collegamenti brevi da un collegamento lungo generato in precedenza. Firebase Dynamic Links genera un URL come il seguente:

https://example.page.link/WXYZ

L'SDK C++ funziona sia per Android che per iOS, con alcune configurazioni aggiuntive necessarie per ogni piattaforma.d

Prima di iniziare

Prima di poter utilizzare Firebase Dynamic Links , devi:

  • Registra il tuo progetto C++ e configuralo per utilizzare Firebase.

    Se il tuo progetto C++ utilizza già Firebase, significa che è già registrato e configurato per Firebase.

  • Aggiungi l' SDK Firebase C++ al tuo progetto C++.

Tieni presente che l'aggiunta di Firebase al tuo progetto C++ comporta attività sia nella console Firebase che nel tuo progetto C++ aperto (ad esempio, scarichi i file di configurazione Firebase dalla console, quindi li sposti nel tuo progetto C++).

Androide

  1. Nella console Firebase, apri la sezione Collegamenti dinamici .
  2. Se non hai già accettato i termini di servizio e impostato un prefisso URI per i tuoi collegamenti dinamici, fallo quando richiesto.

    Se disponi già di un prefisso URI Dynamic Links, prendine nota. È necessario fornire un prefisso URI di collegamenti dinamici quando si creano collegamenti dinamici a livello di codice.

  3. Consigliato : specifica i pattern URL consentiti nei link diretti e nei link di riserva. In questo modo, impedisci a soggetti non autorizzati di creare collegamenti dinamici che reindirizzano dal tuo dominio a siti che non controlli. Consulta Modelli URL della lista bianca .

iOS

  1. Nella console Firebase, apri la sezione Collegamenti dinamici .
  2. Se non hai già accettato i termini di servizio e impostato un prefisso URI per i tuoi collegamenti dinamici, fallo quando richiesto.

    Se disponi già di un prefisso URI Dynamic Links, prendine nota. È necessario fornire un dominio Dynamic Links quando crei Dynamic Links a livello di codice.

  3. La libreria client Firebase Dynamic Links C++ utilizza schemi URL personalizzati su iOS per elaborare i collegamenti. Devi aggiungere schemi URL personalizzati alla tua app per supportare la ricezione di collegamenti dinamici:
    1. Per aprire la configurazione del progetto, fare doppio clic sul nome del progetto nella visualizzazione ad albero a sinistra. Seleziona la tua app dalla sezione TARGETS , quindi seleziona la scheda Informazioni ed espandi la sezione Tipi di URL .
    2. Fai clic sul pulsante + e aggiungi uno schema URL per l'ID cliente invertito. Per trovare questo valore, apri il file di configurazione GoogleService-Info.plist e cerca la chiave REVERSED_CLIENT_ID . Copia il valore di quella chiave e incollalo nella casella Schemi URL nella pagina di configurazione. Lascia vuoti gli altri campi.
    3. Fai clic sul pulsante + e aggiungi un secondo schema URL. Questo è uguale all'ID bundle della tua app. Ad esempio, se l'ID del pacchetto è com.example.ios , digita quel valore nella casella Schemi URL . Puoi trovare l'ID bundle della tua app nella scheda Generale della configurazione del progetto ( Identità > Identificatore bundle ).

Utilizza la console Firebase

Se desideri generare un singolo collegamento dinamico, a scopo di test o per consentire al tuo team di marketing di creare facilmente un collegamento che possa essere utilizzato in qualcosa come un post sui social media, il modo più semplice sarebbe visitare la console Firebase e crearne uno manualmente seguendo il modulo passo passo.

Domini personalizzati

Puoi avere un maggiore controllo sul marchio del tuo collegamento dinamico utilizzando il tuo dominio anziché un sottodominio goo.gl o page.link . Segui queste istruzioni per impostare un dominio personalizzato per il tuo progetto.

Utilizzando l'API Firebase Dynamic Links

Crea e inizializza l'app

Prima di poter creare collegamenti dinamici, dovrai creare e inizializzare un oggetto firebase::App .

Includi il file di intestazione per firebase::App :

#include "firebase/app.h"

La parte successiva varia a seconda della piattaforma:

Androide

Crea firebase::App , passando l'ambiente JNI e un riferimento jobject all'attività Java come argomenti:

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

iOS

Crea firebase::App :

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

Inizializza la libreria dei collegamenti dinamici

Prima di creare un collegamento dinamico, è necessario inizializzare innanzitutto la libreria Collegamenti dinamici:

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

Creazione di un lungo collegamento dinamico dai parametri

Per creare un collegamento dinamico, crea un oggetto DynamicLinkComponents, impostando uno qualsiasi dei membri facoltativi per una configurazione aggiuntiva e passandolo a dynamic_links::GetShortLink o dynamic_links::GetLongLink .

Il seguente esempio minimo crea un lungo collegamento dinamico a https://www.example.com/ che si apre con l'app Android com.example.android.package_name e l'app 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);

Creazione di un breve collegamento dinamico

Per creare un collegamento dinamico breve, passa un collegamento lungo generato in precedenza a GetShortLink o crea DynamicLinkComponents nello stesso modo di cui sopra.

GetShortLink accetta facoltativamente un parametro di configurazione DynamicLinkOptions aggiuntivo con PathLength ; questo ti consente di controllare come deve essere generato il collegamento. La generazione di un collegamento breve richiede una richiesta di rete al backend Firebase, quindi GetShortLink è asincrono e restituisce un Future<GeneratedLink> .

Per esempio:

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

Se il tuo programma ha un ciclo di aggiornamento che viene eseguito regolarmente (diciamo 30 o 60 volte al secondo), puoi controllare i risultati una volta per aggiornamento:

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