Crea link dinamici con C++

Puoi creare Dynamic Links brevi o lunghi con l'API Firebase Dynamic Links. L'API accetta diverse strutture di parametri facoltativi per creare i link. Puoi creare link brevi anche da un link 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.

Prima di iniziare

Prima di poter utilizzare Firebase Dynamic Links, devi:

  • Registra il tuo progetto C++ e configuralo in modo che utilizzi 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 progetto C++ comporta attività sia nella console Firebase sia nel progetto C++ aperto (ad esempio, scarichi i file di configurazione Firebase dalla console, quindi li sposti nel progetto C++).

Android

  1. Nella console Firebase, apri la sezione Dynamic Links.
  2. Se non hai ancora accettato i Termini di servizio e impostato un prefisso URI per Dynamic Links, fallo quando richiesto.

    Se hai già un prefisso URI Dynamic Links, prendine nota. Devi fornire un prefisso URI Dynamic Links quando crei Dynamic Links tramite programmazione.

  3. Consigliato: specifica i pattern URL consentiti nei link diretti e di fallback. In questo modo, eviti che parti non autorizzate creino Dynamic Links che reindirizzano dal tuo dominio a siti che non sono sotto il tuo controllo. Consulta la sezione Pattern URL per la whitelist.

iOS

  1. Nella console Firebase, apri la sezione Dynamic Links.
  2. Se non hai ancora accettato i Termini di servizio e impostato un prefisso URI per Dynamic Links, fallo quando richiesto.

    Se hai già un prefisso URI Dynamic Links, prendine nota. Devi fornire un dominio Dynamic Links quando crei Dynamic Links tramite programmazione.

  3. La libreria client Firebase Dynamic Links C++ utilizza schemi URL personalizzati su iOS per elaborare i link. Devi aggiungere schemi URL personalizzati all'app per supportare la ricezione di Dynamic Links:
    1. Per aprire la configurazione del progetto, fai doppio clic sul nome del progetto nella visualizzazione ad albero a sinistra. Seleziona la tua app dalla sezione TARGET, poi 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 della chiave e incollalo nella casella Schemi URL della pagina di configurazione. Lascia vuoti gli altri campi.
    3. Fai clic sul pulsante + e aggiungi un secondo schema URL. È lo stesso dell'ID gruppo della tua app. Ad esempio, se l'ID pacchetto è com.example.ios, digita il valore nella casella Schemi URL. Puoi trovare l'ID pacchetto dell'app nella scheda Generale della configurazione del progetto (Identità > Identificatore pacchetto).

Utilizzare la console Firebase

Se vuoi generare un singolo Dynamic Link, a scopo di test o per consentire al tuo team di marketing di creare facilmente un link che possa essere utilizzato, ad esempio, in un post sui social media, il modo più semplice è visitare la console Firebase e crearne uno manualmente seguendo la procedura dettagliata.

Domini personalizzati

Puoi avere un maggiore controllo sul branding del tuo Dynamic Link utilizzando il tuo dominio anziché un sottodominio goo.gl o page.link. Segui queste istruzioni per configurare un dominio personalizzato per il tuo progetto.

Utilizzo dell'API Firebase Dynamic Links

Crea e inizializza app

Prima di poter creare Dynamic Links, devi 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:

Android

Crea l'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 il firebase::App:

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

Inizializza la libreria Dynamic Links

Prima di creare un Dynamic Link, devi prima inizializzare la libreria Dynamic Links:

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

Creazione di un elemento Dynamic Link lungo dai parametri in corso...

Per creare un link dinamico, crea un oggetto DynamicLinkComponents, imposta uno dei membri facoltativi per una configurazione aggiuntiva e passalo a dynamic_links::GetShortLink o dynamic_links::GetLongLink.

Il seguente esempio minimo crea un link dinamico lungo a https://www.example.com/ che si apre con la tua 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 uno Short Dynamic Link in corso...

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

GetShortLink accetta facoltativamente un parametro di configurazione DynamicLinkOptions aggiuntivo con PathLength; in questo modo puoi controllare la modalità di generazione del link. La generazione di un link breve richiede una richiesta di rete al backend di Firebase, pertanto GetShortLink è asincrona e restituisce un Future<GeneratedLink>.

Ad 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 dispone di un ciclo di aggiornamento che viene eseguito regolarmente (ad esempio 30 o 60 volte al secondo), puoi controllare i risultati una volta per ogni 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());
  }
}