Wenn Sie die von Ihnen erstellten Firebase Dynamic Links erhalten möchten, müssen Sie das Dynamic Links SDK in Ihre App einbinden und die Methode aufrufen, wenn Ihre App geladen wird, um die im Dynamic Link übergebenen Daten zu erhalten.FirebaseDynamicLinks.getDynamicLink()
Firebase und das Dynamic Links SDK einrichten
Installieren und initialisieren Sie die Firebase SDKs für Flutter, falls Sie dies noch nicht getan haben.
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_linksWenn Sie eine Android-App entwickeln, öffnen Sie die Projekteinstellungen Seite in der Firebase Console 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, für die Sie Ihre App entwickeln.
Android
Unter Android müssen Sie einen neuen Intent-Filter hinzufügen, um Deeplinks Ihrer Domain abzufangen, da der Dynamic Link zu Ihrer Domain weiterleitet, wenn Ihre App installiert ist. Dies ist erforderlich, damit Ihre App die Dynamic Link-Daten empfangen kann, nachdem sie aus dem Google Play Store installiert oder aktualisiert wurde und ein Nutzer auf die Schaltfläche „Weiter“ tippt. 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 Dynamic Link mit einem Deeplink zum von Ihnen angegebenen Schema und Host öffnen, startet Ihre App die Aktivität mit diesem Intent-Filter, um den Link zu verarbeiten.
Im nächsten Schritt muss der SHA‑256-Fingerabdruck des Signaturzertifikats in der Firebase Console für die App registriert werden. Weitere Informationen zum Abrufen des SHA‑256-Fingerabdrucks finden Sie auf der Seite Client authentifizieren.
Apple-Plattformen
Erstellen Sie ein Apple-Entwicklerkonto falls Sie noch keines haben.
Prüfen Sie auf der Seite „Projekteinstellungen“ der Firebase Console, ob Ihre iOS-App mit Ihrer App Store-ID und Team-ID richtig konfiguriert ist.
Erstellen Sie auf der Apple Developer-Website ein Bereitstellungsprofil für Ihre App, bei dem die Funktion „Zugehörige Domains“ aktiviert ist.
Gehen Sie in Xcode so vor:
Öffnen Sie Ihre App unter der Überschrift TARGETS.
Prüfen Sie auf der Seite „Signieren &Funktionen“, ob Ihr Team registriert und Ihr Bereitstellungsprofil festgelegt ist.
Aktivieren Sie auf der Seite „Signieren &Funktionen“ die Option Zugehörige Domains und fügen Sie der Liste „Zugehörige Domains“ Folgendes hinzu (ersetzen Sie das Beispiel durch Ihre Domain):
applinks:example.page.linkFügen Sie auf der Seite „Info“ Ihrem Projekt einen URL-Typ hinzu. Legen Sie für das Feld „URL-Schemata“ die Paket-ID Ihrer App fest. Die Kennung kann
Bundle IDoder ein beliebiger anderer Wert sein.Wenn Sie eine benutzerdefinierte Domain für Ihr Firebase-Projekt eingerichtet haben, fügen Sie das URL-Präfix des Dynamic Link mit dem Schlüssel
FirebaseDynamicLinksCustomDomainsin die DateiInfo.plistIhres 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>Optional:Deaktivieren Sie die Verwendung der iOS-Zwischenablage durch das Dynamic Links SDK.
Standardmäßig verwendet das Dynamic Links SDK die Zwischenablage, um die Zuverlässigkeit von Deeplinks nach der Installation zu verbessern. Durch die Verwendung der Zwischenablage kann Dynamic Links dafür sorgen, dass Nutzer, die einen Dynamic Link öffnen, aber zuerst Ihre App installieren müssen, beim ersten Öffnen der App nach der Installation direkt zum ursprünglichen verlinkten Inhalt weitergeleitet werden.
Der Nachteil ist, dass die Verwendung der Zwischenablage unter iOS 14 und höher eine Benachrichtigung auslöst. Wenn Nutzer Ihre App also zum ersten Mal öffnen und die Zwischenablage eine Dynamic Link-URL enthält, wird ihnen eine Benachrichtigung angezeigt, dass Ihre App auf die Zwischenablage zugegriffen hat. Das kann zu Verwirrung führen.
Wenn Sie dieses Verhalten deaktivieren möchten, bearbeiten Sie die Datei
Info.plistIhres Xcode-Projekts und legen Sie den SchlüsselFirebaseDeepLinkPasteboardRetrievalEnabledaufNOfest.
Deeplinks verarbeiten
Um einen Dynamic Link in Ihrer Anwendung zu verarbeiten, müssen Sie zwei Szenarien implementieren.
Beendeter Status
Richten Sie die folgenden Methoden ein:
FirebaseDynamicLinks.getInitialLinkgibtFuture<PendingDynamicLinkData?>zurück.FirebaseDynamicLinks.onLinkist ein Event-Handler, der einenStreammitPendingDynamicLinkData?zurückgibt.
Unter Android wird der Link immer über FirebaseDynamicLinks.getInitialLink aus einem beendeten Status empfangen, unter iOS ist das jedoch nicht garantiert. Daher ist es sinnvoll, beide in der folgenden Reihenfolge einzurichten, damit Ihre Anwendung den Link empfängt:
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));
}
In Ihrer Anwendungslogik können Sie dann prüfen, ob ein Link verarbeitet wurde, und eine Aktion ausführen, z. B.:
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);
}
Hintergrund-/Vordergrundstatus
Wenn die Anwendung geöffnet ist oder im Hintergrund ausgeführt wird, verwenden Sie den Getter FirebaseDynamicLinks.onLink:
FirebaseDynamicLinks.instance.onLink.listen((dynamicLinkData) {
Navigator.pushNamed(context, dynamicLinkData.link.path);
}).onError((error) {
// Handle errors
});
Alternativ können Sie, wenn Sie feststellen möchten, ob ein bestimmter Dynamic Link zum Öffnen der Anwendung verwendet wurde, ihn stattdessen an die Methode getDynamicLink übergeben:
String link = 'https://dynamic-link-domain/ke2Qa';
final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getDynamicLink(Uri.parse(link));
Dynamic Link auf der iOS-Plattform testen
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 ausführen (flutter run --release), wenn Sie einen Dynamic Link aus einem beendeten App-Status testen (d. h. die App wurde durch Wischen geschlossen).