Damit Sie die von Ihnen erstellten Firebase Dynamic Links empfangen können, müssen Sie das Dynamic Links SDK in Ihre App einbinden und die Methode FirebaseDynamicLinks.getDynamicLink()
aufrufen, wenn Ihre App geladen wird, 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, 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 über den Play Store installiert/aktualisiert wurde und der 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 müssen Sie dafür sorgen, dass der SHA-256-Fingerabdruck des Signaturzertifikats in der Firebase-Konsole für die App registriert ist. 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 korrekt konfiguriert ist.
Erstellen Sie auf der Apple Developer-Website ein Bereitstellungsprofil für Ihre App, in dem die Funktion „Associated Domain“ aktiviert ist.
Gehen Sie in Xcode so vor:
Öffnen Sie Ihre App unter der Überschrift ZIELE.
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 Zugeordnete Domains und fügen Sie der Liste „Zugeordnete Domains“ Folgendes hinzu (ersetzen Sie „example“ durch Ihre Domain):
applinks:example.page.link
Fügen Sie auf der Seite „Info“ Ihrem Projekt einen URL-Typ hinzu. Legen Sie das Feld „URL-Schemas“ auf die Bundle-ID Ihrer App fest. 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 Dynamic Link-URL-Präfix 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 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 können dynamische Links dafür sorgen, dass Nutzer, die einen dynamischen Link öffnen, aber Ihre App erst installieren müssen, beim ersten Öffnen der App nach der Installation sofort zu den ursprünglich verlinkten Inhalten 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 URL für einen dynamischen Link 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.plist
Ihres Xcode-Projekts und legen Sie den SchlüsselFirebaseDeepLinkPasteboardRetrievalEnabled
aufNO
fest.
Deeplinks verarbeiten
Wenn Sie einen Dynamic Link in Ihrer Anwendung verarbeiten möchten, müssen Sie zwei Szenarien implementieren.
Status „Beendet“
Richten Sie die folgenden Methoden ein:
FirebaseDynamicLinks.getInitialLink
– gibt einenFuture<PendingDynamicLinkData?>
zurückFirebaseDynamicLinks.onLink
: Event-Handler, der einStream
mit einemPendingDynamicLinkData?
zurückgibt
Unter Android wird der Link immer über FirebaseDynamicLinks.getInitialLink
aus einem beendeten Zustand empfangen, unter iOS ist dies jedoch nicht garantiert. Daher empfiehlt es sich, beide in der folgenden Reihenfolge einzurichten, damit 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));
}
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
Verwenden Sie den FirebaseDynamicLinks.onLink
-Getter, während die Anwendung geöffnet ist oder im Hintergrund ausgeführt wird:
FirebaseDynamicLinks.instance.onLink.listen((dynamicLinkData) {
Navigator.pushNamed(context, dynamicLinkData.link.path);
}).onError((error) {
// Handle errors
});
Wenn Sie alternativ feststellen möchten, ob ein bestimmter Dynamic Link zum Öffnen der Anwendung verwendet wurde, übergeben Sie ihn stattdessen an die Methode getDynamicLink
:
String link = 'https://dynamic-link-domain/ke2Qa';
final PendingDynamicLinkData? initialLink = await FirebaseDynamicLinks.instance.getDynamicLink(Uri.parse(link));
Dynamischen Link auf der iOS-Plattform testen
Wenn Sie einen Dynamic Link unter iOS testen möchten, müssen Sie ein echtes Gerät verwenden. Wenn Sie einen Dynamic Link aus einem beendeten App-Status testen möchten (d. h. die App wurde durch Wischen geschlossen), müssen Sie die App auch im Release-Modus ausführen (d. h. flutter run --release
).