Créer des liens dynamiques avec C++

Vous pouvez créer des Dynamic Links courts ou longs avec l'API Firebase Dynamic Links. L'API accepte plusieurs structures de paramètres facultatifs pour créer des liens. Vous pouvez également créer des liens courts à partir de liens longs générés précédemment. Firebase Dynamic Links génère une URL semblable à celle-ci :

https://example.page.link/WXYZ

Le SDK C++ fonctionne à la fois pour Android et iOS, mais une configuration supplémentaire est requise pour chaque plate-forme.

Avant de commencer

Avant de pouvoir utiliser Firebase Dynamic Links, vous devez :

  • Enregistrez votre projet C++ et configurez-le pour utiliser Firebase.

    Si votre projet C++ utilise déjà Firebase, il est déjà enregistré et configuré pour Firebase.

  • Ajoutez le SDK Firebase C++ à votre projet C++.

Notez que l'ajout de Firebase à votre projet C++ implique des tâches à la fois dans la console Firebase et dans votre projet C++ ouvert (par exemple, vous téléchargez des fichiers de configuration Firebase depuis la console, puis vous les déplacez dans votre projet C++).

  1. Dans la console Firebase, ouvrez la section Dynamic Links.
  2. Si vous n'avez pas encore accepté les conditions d'utilisation et défini un préfixe d'URI pour votre Dynamic Links, faites-le lorsque vous y êtes invité.

    Si vous avez déjà un préfixe d'URI Dynamic Links, notez-le. Vous devez fournir un préfixe d'URI Dynamic Links lorsque vous créez des Dynamic Links de manière programmatique.

  3. Recommandation : spécifiez les formats d'URL autorisés pour vos liens profonds et liens de remplacement. Vous empêchez ainsi des tiers non autorisés de créer des Dynamic Links qui redirigent de votre domaine vers des sites que vous ne contrôlez pas. Consultez Autoriser des modèles d'URL spécifiques.
  1. Dans la console Firebase, ouvrez la section Dynamic Links.
  2. Si vous n'avez pas encore accepté les conditions d'utilisation et défini un préfixe d'URI pour votre Dynamic Links, faites-le lorsque vous y êtes invité.

    Si vous avez déjà un préfixe d'URI Dynamic Links, notez-le. Vous devez fournir un domaine Dynamic Links lorsque vous créez des Dynamic Links de manière programmatique.

  3. La bibliothèque cliente C++ Firebase Dynamic Links utilise des schémas d'URL personnalisés sur iOS pour traiter les liens. Vous devez ajouter des schémas d'URL personnalisés à votre application pour qu'elle puisse recevoir Dynamic Links :
    1. Pour ouvrir la configuration de votre projet, double-cliquez sur son nom dans l'arborescence de gauche. Sélectionnez votre application dans la section CIBLES, puis l'onglet Infos et développez la section Types d'URL.
    2. Cliquez sur le bouton +, puis ajoutez un schéma d'URL pour votre ID client inversé. Pour trouver cette valeur, ouvrez le fichier de configuration GoogleService-Info.plist et recherchez la clé REVERSED_CLIENT_ID. Copiez la valeur de cette clé et collez-la dans la zone Schémas d'URL sur la page de configuration. Laissez les autres champs vides.
    3. Cliquez sur le bouton +, puis ajoutez un deuxième schéma d'URL. Il est identique à l'ID du bundle de votre application. Par exemple, si votre ID de bundle est com.example.ios, saisissez cette valeur dans la zone Schémas d'URL. Vous trouverez l'ID de bundle de votre application dans l'onglet Général de la configuration du projet (Identité > ID de bundle).

Utiliser la console Firebase

Si vous souhaitez générer un seul Dynamic Link, que ce soit à des fins de test ou pour permettre à votre équipe marketing de créer facilement un lien à utiliser dans un post sur les réseaux sociaux, par exemple, le moyen le plus simple consiste à accéder à la console Firebase et à en créer un manuellement en suivant le formulaire pas à pas.

Domaines personnalisés

Vous pouvez mieux contrôler l'image de marque de votre Dynamic Link en utilisant votre propre domaine au lieu d'un sous-domaine goo.gl ou page.link. Suivez ces instructions pour configurer un domaine personnalisé pour votre projet.

Utiliser l'API Firebase Dynamic Links

Créer et initialiser l'application

Avant de pouvoir créer des Dynamic Links, vous devez créer et initialiser un objet firebase::App.

Incluez le fichier d'en-tête pour firebase::App :

#include "firebase/app.h"

La partie suivante varie en fonction de votre plate-forme :

Créez le firebase::App en transmettant l'environnement JNI et une référence jobject à l'activité Java en tant qu'arguments :

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

Créez le sous-réseau firebase::App :

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

Initialiser la bibliothèque Dynamic Links

Avant de créer un Dynamic Link, vous devez d'abord initialiser la bibliothèque Dynamic Links :

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

Créer un Dynamic Link long à partir de paramètres

Pour créer un lien dynamique, créez un objet DynamicLinkComponents, en définissant l'un des membres facultatifs pour une configuration supplémentaire, et transmettez-le à dynamic_links::GetShortLink ou dynamic_links::GetLongLink.

L'exemple minimal suivant crée un lien dynamique long vers https://www.example.com/ qui s'ouvre avec votre application Android com.example.android.package_name et votre application 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);

Créer un Short Dynamic Link

Pour créer un lien dynamique court, transmettez un lien long généré précédemment à GetShortLink ou créez DynamicLinkComponents de la même manière que ci-dessus.

GetShortLink accepte éventuellement un paramètre de configuration DynamicLinkOptions supplémentaire avec PathLength. Cela vous permet de contrôler la façon dont le lien doit être généré. La génération d'un lien court nécessite une requête réseau au backend Firebase. Par conséquent, GetShortLink est asynchrone et renvoie un Future<GeneratedLink>.

Exemple :

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

Si votre programme comporte une boucle de mise à jour qui s'exécute régulièrement (par exemple, 30 ou 60 fois par seconde), vous pouvez vérifier les résultats une fois par mise à jour :

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