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.
Firebase und das Dynamic Links SDK einrichten
Installieren und initialisieren Sie die Firebase SDKs für Flutter, falls noch nicht geschehen.
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
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
Apple-Entwicklerkonto erstellen wenn Sie noch keines haben.
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.
Erstellen Sie auf der Website für Apple-Entwickler ein Bereitstellungsprofil für Ihre App, bei dem die Funktion „Verknüpfte Domain“ aktiviert ist.
Gehen Sie in Xcode so vor:
Öffnen Sie Ihre App unter der Überschrift ZIELGRUPPE.
Auf der Seite zum Signieren und Stellen Sie sicher, dass Ihr Team registriert ist, und Ihr Bereitstellungsprofil festgelegt ist.
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
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.)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 DateiInfo.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>
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üsselFirebaseDeepLinkPasteboardRetrievalEnabled
aufNO
.
Mit Deeplinks umgehen
Zur Verarbeitung eines dynamischen Links in Ihrer Anwendung müssen zwei Szenarien implementiert werden.
Status „Beendet“
Richten Sie die folgenden Methoden ein:
FirebaseDynamicLinks.getInitialLink
: gibtFuture<PendingDynamicLinkData?>
zurückFirebaseDynamicLinks.onLink
: Event-Handler, der eineStream
zurückgibt, die einPendingDynamicLinkData?
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));
Dynamischen Link auf 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 (flutter run --release
) ausführen, wenn Sie einen Dynamic Link aus einem beendeten App-Status (d. h. die App wurde durch Wischen geschlossen) testen.