Dynamische Links mit C++ erhalten

Wenn du die Firebase Dynamic Links erhalten möchtest, die du erstellt hast, musst du das Dynamic Links SDK in deine App einbinden und ein firebase::dynamic_links::Listener-Objekt erstellen, das die virtuelle Funktion OnDynamicLinkReceived implementiert.

Das C++ SDK funktioniert sowohl für Android als auch für iOS. Für jede Plattform ist jedoch eine zusätzliche Einrichtung erforderlich.

Hinweis

Bevor Sie Firebase Dynamic Links verwenden können, müssen Sie Folgendes tun:

  • Registrieren Sie Ihr C++-Projekt und konfigurieren Sie es für die Verwendung von Firebase.

    Wenn in Ihrem C++-Projekt bereits Firebase verwendet wird, ist es bereits für Firebase registriert und konfiguriert.

  • Fügen Sie Ihrem C++-Projekt das Firebase C++ SDK hinzu.

Das Hinzufügen von Firebase zu Ihrem C++-Projekt umfasst Aufgaben sowohl in der Firebase Console als auch in Ihrem geöffneten C++-Projekt. Sie laden beispielsweise Firebase-Konfigurationsdateien aus der Console herunter und verschieben sie dann in Ihr C++-Projekt.

Benutzerdefinierte URL-Schemas hinzufügen (nur iOS)

Die Firebase Dynamic Links-C++-Clientbibliothek verwendet benutzerdefinierte URL-Schemas unter iOS, um Links zu verarbeiten. Sie müssen Ihrer App benutzerdefinierte URL-Schemas hinzufügen, um den Empfang von Dynamic Links zu unterstützen.

  1. Doppelklicken Sie in der linken Baumansicht auf den Projektnamen, um die Projektkonfiguration zu öffnen.

  2. Wählen Sie im Bereich ZIELE Ihre App aus, gehen Sie dann zum Tab Info und maximieren Sie den Bereich URL-Typen.

  3. Klicken Sie auf die Schaltfläche + und fügen Sie dann ein URL-Schema für Ihre Client-ID in umgekehrter Reihenfolge hinzu. So ermitteln Sie diesen Wert:

    1. Öffnen Sie die Konfigurationsdatei GoogleService-Info.plist und suchen Sie nach dem Schlüssel REVERSED_CLIENT_ID.

    2. Kopieren Sie den Wert dieses Schlüssels und fügen Sie ihn auf der Konfigurationsseite in das Feld URL-Schemas ein.

    3. Lassen Sie die anderen Felder leer.

  4. Klicken Sie auf die Schaltfläche + und fügen Sie ein zweites URL-Schema hinzu. Diese entspricht der Bundle-ID Ihrer App.

    Wenn Ihre Bundle-ID beispielsweise com.example.ios lautet, geben Sie diesen Wert in das Feld URL-Schemas ein.

    Sie finden die Bundle-ID Ihrer App in der Projektkonfiguration auf dem Tab Allgemein (Identität > Bundle-ID).

Dynamic Link wird empfangen

App erstellen und initialisieren

Bevor du nach empfangenen Dynamic Links suchen kannst, musst du ein firebase::App-Objekt erstellen und initialisieren.

Fügen Sie die Headerdatei für firebase::App ein:

#include "firebase/app.h"

Der nächste Teil variiert je nach Plattform:

Android

Erstelle die firebase::App und übergebe als Argumente die JNI-Umgebung und einen jobject-Verweis auf die Java-Aktivität:

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

iOS

Erstellen Sie firebase::App:

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

Listener implementieren, um nach Dynamic Links zu suchen

Wenn du prüfen möchtest, ob eine Dynamic Link empfangen wurde, implementiere und verwende die Klasse firebase::dynamic_links::Listener.

Fügen Sie die Headerdatei für den Empfang von Dynamic Links ein:

#include "firebase/dynamic_links.h"

Initialisieren Sie die Dynamic Links-Bibliothek:

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

Erstellen Sie ein Objekt, das firebase::dynamic_links::Listener implementiert, und geben Sie es der Dynamic Links-Bibliothek mit SetListener() an oder übergeben Sie es als zweites Argument an Initialize.

Damit Dynamic Links empfangen werden kann, muss die Listener-Klasse die virtuelle Funktion OnDynamicLinkReceived implementieren. Wenn Sie die Methode überschreiben, können Sie einen Deeplink erhalten, falls einer empfangen wurde.

class Listener : public firebase::dynamic_links::Listener {
 public:
  // Called on the client when a dynamic link arrives.
  void OnDynamicLinkReceived(
      const firebase::dynamic_links::DynamicLink* dynamic_link) override {
    printf("Received link: %s", dynamic_link->url.c_str());
  }
};