Firebase Dynamic Links in einer Flutter-App empfangen

Wenn Sie die von Ihnen erstellten Firebase Dynamic Links empfangen möchten, müssen Sie das Dynamic Links SDK in Ihre App einbinden und die Methode FirebaseDynamicLinks.getDynamicLink() beim Laden Ihrer App aufrufen, um die im Dynamic Link übergebenen Daten abzurufen.

  1. Installieren und initialisieren Sie die Firebase SDKs für Flutter, falls noch nicht geschehen.

  2. Führen Sie im Stammverzeichnis Ihres Flutter-Projekts den folgenden Befehl aus, um das Dynamic Links-Plug-in zu installieren:

    flutter pub add firebase_dynamic_links
    
  3. Wenn Sie eine Android-App entwickeln, öffnen Sie in der Firebase Console die Seite Projekteinstellungen und prüfen Sie, ob Sie Ihren SHA-1-Signaturschlüssel angegeben haben. Wenn Sie App-Links verwenden, geben Sie auch Ihren SHA-256-Schlüssel an.

Plattformintegration

Führen Sie die folgenden Schritte zur Plattformintegration für die Plattformen aus, die Sie nutzen. für die Sie Ihre App entwickeln.

Android

Unter Android müssen Sie einen neuen Intent-Filter zum Abfangen von Deeplinks Ihrer Domain hinzufügen, da der Der dynamische Link leitet zu Ihrer Domain weiter, wenn Ihre App installiert ist. Dies ist erforderlich, damit Ihre App die Dynamic Link-Daten empfängt, nachdem sie über den Play Store installiert oder aktualisiert wurde und der Nutzer auf die Schaltfläche „Weiter“ getippt hat. In AndroidManifest.xml:

<intent-filter>
    <action android:name="android.intent.action.VIEW"/>
    <category android:name="android.intent.category.DEFAULT"/>
    <category android:name="android.intent.category.BROWSABLE"/>
    <data
        android:host="example.com"
        android:scheme="https"/>
</intent-filter>

Wenn Nutzer einen dynamischen Link mit einem Deeplink zu dem von Ihnen angegebenen Schema und Host öffnen, wird Ihre App Starten Sie die Aktivität mit diesem Intent-Filter, um den Link zu verarbeiten.

Im nächsten Schritt müssen Sie dafür sorgen, dass der SHA-256-Fingerabdruck des Signaturzertifikats in der Firebase Console für die App registriert ist. Weitere Informationen zum Abrufen des SHA-256-Fingerabdrucks finden Sie auf der Seite Client authentifizieren.

Apple-Plattformen

  1. Apple-Entwicklerkonto erstellen wenn Sie noch keines haben.

  2. Prüfen Sie auf der Seite Projekteinstellungen der Firebase Console, ob Ihre iOS-App mit Ihrer App Store-ID und Ihrer Team-ID richtig konfiguriert ist.

  3. Erstellen Sie auf der Website für Apple-Entwickler ein Bereitstellungsprofil für Ihre App, bei dem die Funktion „Verknüpfte Domain“ aktiviert ist.

  4. Gehen Sie in Xcode so vor:

    1. Öffnen Sie Ihre App unter der Überschrift ZIELGRUPPE.

    2. Auf der Seite zum Signieren und Stellen Sie sicher, dass Ihr Team registriert ist, und Ihr Bereitstellungsprofil festgelegt ist.

    3. Aktivieren Sie auf der Seite „Signatur und Funktionen“ die Option Verknüpfte Domains und fügen Sie der Liste der verknüpften Domains Folgendes hinzu (ersetzen Sie das Beispiel durch Ihre Domain):

      applinks:example.page.link
      
    4. Fügen Sie auf der Infoseite einen URL-Typ zu Ihrem Projekt hinzu. URL-Schemas festlegen der Bundle-ID Ihrer App hinzu. (Die Kennung kann Bundle ID oder ein beliebiger anderer Wert sein.)

    5. Wenn Sie eine benutzerdefinierte Domain für Ihr Firebase-Projekt eingerichtet haben, fügen Sie das Präfix der Dynamic Link-URL mit dem Schlüssel FirebaseDynamicLinksCustomDomains in die Datei Info.plist Ihres iOS-Projekts ein.

      <?xml version="1.0" encoding="UTF-8"?>
      <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
      <plist version="1.0">
      <dict>
      <key>FirebaseDynamicLinksCustomDomains</key>
      <array>
          <string>https://custom.domain.io/path1</string>
          <string>https://custom.domain.io/path2</string>
      </array>
      
      ...other settings
      
      </dict>
      </plist>
      
    6. Optional: Deaktivieren Sie die Verwendung des iOS-Zwischenspeichers durch das Dynamic Links SDK.

      Standardmäßig verwendet das Dynamic Links SDK den Zwischenspeicher, um die Zuverlässigkeit von Deeplinks nach der Installation zu verbessern. Mithilfe der Zwischenablage können dynamische Links sorgen dafür, dass ein Nutzer, der einen dynamischen Link öffnet, die Nutzer zuerst installieren, können sie sofort zur ursprünglichen Version verlinkte Inhalte nach dem ersten Öffnen der App Installation.

      Der Nachteil ist, dass durch die Verwendung der unter iOS 14 und höher. Wenn Nutzende Ihre Website zum ersten Mal öffnen, Wenn die Zwischenablage eine URL für einen dynamischen Link enthält, wird dass deine App auf die Zwischenablage zugegriffen hat, was dazu führen kann, Verwirrung stiften.

      Wenn Sie dieses Verhalten deaktivieren möchten, bearbeiten Sie die Datei Info.plist Ihres Xcode-Projekts und setzen Sie den Schlüssel FirebaseDeepLinkPasteboardRetrievalEnabled auf NO.

Zur Verarbeitung eines dynamischen Links in Ihrer Anwendung müssen zwei Szenarien implementiert werden.

Status „Beendet“

Richten Sie die folgenden Methoden ein:

  1. FirebaseDynamicLinks.getInitialLink: gibt Future<PendingDynamicLinkData?> zurück
  2. FirebaseDynamicLinks.onLink: Event-Handler, der eine Stream zurückgibt, die ein PendingDynamicLinkData? enthält.

Android erhält den Link immer über FirebaseDynamicLinks.getInitialLink, wenn er geschlossen wurde. Bei iOS ist das nicht garantiert. Daher empfiehlt es sich, beide in der folgenden Reihenfolge einzurichten: um sicherzustellen, dass Ihre Anwendung den Link erhält:

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp(options: DefaultFirebaseConfig.platformOptions);

  // Check if you received the link via `getInitialLink` first
  final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getInitialLink();

  if (initialLink != null) {
    final Uri deepLink = initialLink.link;
    // Example of using the dynamic link to push the user to a different screen
    Navigator.pushNamed(context, deepLink.path);
  }

  FirebaseDynamicLinks.instance.onLink.listen(
        (pendingDynamicLinkData) {
          // Set up the `onLink` event listener next as it may be received here
          if (pendingDynamicLinkData != null) {
            final Uri deepLink = pendingDynamicLinkData.link;
            // Example of using the dynamic link to push the user to a different screen
            Navigator.pushNamed(context, deepLink.path);
          }
        },
      );

  runApp(MyApp(initialLink));
}

Innerhalb Ihrer Anwendungslogik können Sie dann prüfen, ob ein Link verarbeitet wurde, und eine Aktion ausführen, zum Beispiel:

if (initialLink != null) {
  final Uri deepLink = initialLink.link;
  // Example of using the dynamic link to push the user to a different screen
  Navigator.pushNamed(context, deepLink.path);
}

Status „Im Hintergrund“ / „Im Vordergrund“

Verwende die FirebaseDynamicLinks.onLink, während die App geöffnet oder im Hintergrund ausgeführt wird Getter:

FirebaseDynamicLinks.instance.onLink.listen((dynamicLinkData) {
  Navigator.pushNamed(context, dynamicLinkData.link.path);
}).onError((error) {
  // Handle errors
});

Wenn Sie hingegen wissen möchten, ob zum Öffnen der App ein bestimmter Dynamic Link verwendet wurde, übergeben Sie ihn stattdessen an die getDynamicLink-Methode:

String link = 'https://dynamic-link-domain/ke2Qa';

final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getDynamicLink(Uri.parse(link));

Wenn Sie einen Dynamic Link unter iOS testen möchten, müssen Sie ein echtes Gerät verwenden. Außerdem müssen Sie die App im Release-Modus (flutter run --release) ausführen, wenn Sie einen Dynamic Link aus einem beendeten App-Status (d. h. die App wurde durch Wischen geschlossen) testen.