Um die von Ihnen erstellten dynamischen Firebase-Links zu erhalten, müssen Sie das Dynamic Links SDK in Ihre App einbinden und beim Laden Ihrer App die Methoden handleUniversalLink:
und dynamicLinkFromCustomSchemeURL:
aufrufen, um die im dynamischen Link übergebenen Daten abzurufen.
Voraussetzungen
Bevor Sie beginnen, stellen Sie sicher, dass Sie Firebase zu Ihrem iOS-Projekt hinzufügen .
Richten Sie Firebase und das Dynamic Links SDK ein
Verwenden Sie Swift Package Manager, um Firebase-Abhängigkeiten zu installieren und zu verwalten.
- Navigieren Sie in Xcode bei geöffnetem App-Projekt zu File > Add Packages .
- Wenn Sie dazu aufgefordert werden, fügen Sie das Firebase Apple Platforms SDK-Repository hinzu:
- Wählen Sie die Dynamic Links-Bibliothek.
- Fügen Sie das Flag
-ObjC
zum Abschnitt „Andere Linker-Flags“ der Build-Einstellungen Ihres Ziels hinzu. - Für ein optimales Erlebnis mit dynamischen Links empfehlen wir, Google Analytics in Ihrem Firebase-Projekt zu aktivieren und das Firebase SDK für Google Analytics zu Ihrer App hinzuzufügen. Sie können entweder die Bibliothek ohne IDFA-Sammlung oder mit IDFA-Sammlung auswählen.
- Wenn Sie fertig sind, beginnt Xcode automatisch mit der Auflösung und dem Herunterladen Ihrer Abhängigkeiten im Hintergrund.
https://github.com/firebase/firebase-ios-sdk.git
Führen Sie nun einige Konfigurationsschritte aus:
- Öffnen Sie in der Firebase-Konsole den Abschnitt „Dynamische Links“ . Akzeptieren Sie die Nutzungsbedingungen, wenn Sie dazu aufgefordert werden.
Stellen Sie sicher, dass die App Store-ID und Ihr App-ID-Präfix in den Einstellungen Ihrer App angegeben sind. Um die Einstellungen Ihrer App anzuzeigen und zu bearbeiten, gehen Sie zur Seite „Einstellungen“ Ihres Firebase-Projekts und wählen Sie Ihre iOS-App aus.
Sie können bestätigen, dass Ihr Firebase-Projekt ordnungsgemäß für die Verwendung dynamischer Links in Ihrer iOS-App konfiguriert ist, indem Sie die folgende URL öffnen:
https://your_dynamic_links_domain/apple-app-site-association
Wenn Ihre App verbunden ist, enthält die Datei
apple-app-site-association
einen Verweis auf das App-ID-Präfix und die Bundle-ID Ihrer App. Zum Beispiel:{"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["NOT /_/*","/*"]}]}}
Wenn das
details
leer ist, überprüfen Sie noch einmal, ob Sie Ihr App-ID-Präfix angegeben haben. Beachten Sie, dass Ihr App-ID-Präfix möglicherweise nicht mit Ihrer Team-ID übereinstimmt.Optional : Deaktivieren Sie die Verwendung des iOS-Pasteboards durch das Dynamic Links SDK.
Standardmäßig verwendet das Dynamic Links SDK das Pasteboard, um die Zuverlässigkeit von Deep Links nach der Installation zu verbessern. Durch die Verwendung des Pasteboards kann Dynamic Links sicherstellen, dass, wenn ein Benutzer einen Dynamic Link öffnet, aber zuerst Ihre App installieren muss, der Benutzer beim ersten Öffnen der App nach der Installation sofort zum ursprünglichen verknüpften Inhalt wechseln kann.
Der Nachteil dabei ist, dass die Verwendung des Pasteboards unter iOS 14 und höher eine Benachrichtigung auslöst. Wenn Benutzer Ihre App zum ersten Mal öffnen und das Pasteboard eine URL enthält, wird ihnen eine Benachrichtigung angezeigt, dass Ihre App auf das Pasteboard zugegriffen hat, was zu Verwirrung führen kann.
Um dieses Verhalten zu deaktivieren, bearbeiten Sie
Info.plist
Datei Ihres Xcode-Projekts und legen Sie denFirebaseDeepLinkPasteboardRetrievalEnabled
-Schlüssel aufNO
fest.
Öffnen Sie dynamische Links in Ihrer App
- Erstellen Sie auf der Registerkarte „Info“ des Xcode-Projekts Ihrer App einen neuen URL-Typ, der für dynamische Links verwendet werden soll. Legen Sie das Feld „Identifikator“ auf einen eindeutigen Wert und das Feld „URL-Schema“ auf Ihre Bundle-ID fest. Dabei handelt es sich um das von Dynamic Links verwendete Standard-URL-Schema.
- Aktivieren Sie auf der Registerkarte „Funktionen“ des Xcode-Projekts Ihrer App „Assoziierte Domänen“ und fügen Sie Folgendes zur Liste „Assoziierte Domänen“ hinzu:
applinks:your_dynamic_links_domain
- Wenn Sie dynamische Links mit einer vollständig benutzerdefinierten Domäne erhalten möchten, erstellen Sie in
Info.plist
Datei Ihres Xcode-Projekts einen Schlüssel mit dem NamenFirebaseDynamicLinksCustomDomains
und legen Sie ihn auf die URL-Präfixe für dynamische Links Ihrer App fest. Beispiel:FirebaseDynamicLinksCustomDomains https://example.com/promos https://example.com/links/share - Importieren Sie das
FirebaseCore
Modul in IhrUIApplicationDelegate
sowie alle anderen Firebase-Module, die Ihr App-Delegierter verwendet. Um beispielsweise Cloud Firestore und Authentifizierung zu verwenden:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Schnell
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Ziel c
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Konfigurieren Sie eine gemeinsam genutzte
FirebaseApp
Instanz in derapplication(_:didFinishLaunchingWithOptions:)
Methode Ihres App-Delegierten:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Schnell
// Use Firebase library to configure APIs FirebaseApp.configure()
Ziel c
// Use Firebase library to configure APIs [FIRApp configure];
- Wenn Sie SwiftUI verwenden, müssen Sie einen Anwendungsdelegaten erstellen und ihn über
UIApplicationDelegateAdaptor
oderNSApplicationDelegateAdaptor
an IhreApp
Struktur anhängen. Sie müssen auch das Swizzling von App-Delegierten deaktivieren. Weitere Informationen finden Sie in den SwiftUI-Anweisungen .SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
- Als Nächstes behandeln Sie in der
application:continueUserActivity:restorationHandler:
die empfangenen Links als universelle Links, wenn die App bereits installiert ist:Schnell
Hinweis: Dieses Produkt ist nicht auf macOS-, Mac Catalyst-, tvOS- oder watchOS-Zielen verfügbar.func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { let handled = DynamicLinks.dynamicLinks() .handleUniversalLink(userActivity.webpageURL!) { dynamiclink, error in // ... } return handled }
Ziel c
Hinweis: Dieses Produkt ist nicht auf macOS-, Mac Catalyst-, tvOS- oder watchOS-Zielen verfügbar.- (BOOL)application:(UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler: #if defined(__IPHONE_12_0) && (__IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_12_0) (nonnull void (^)(NSArray<id<UIUserActivityRestoring>> *_Nullable))restorationHandler { #else (nonnull void (^)(NSArray *_Nullable))restorationHandler { #endif // __IPHONE_12_0 BOOL handled = [[FIRDynamicLinks dynamicLinks] handleUniversalLink:userActivity.webpageURL completion:^(FIRDynamicLink * _Nullable dynamicLink, NSError * _Nullable error) { // ... }]; return handled; }
- Schließlich verarbeiten Sie in
application:openURL:options:
Links, die über das benutzerdefinierte URL-Schema Ihrer App empfangen werden. Diese Methode wird aufgerufen, wenn Ihre App nach der Installation zum ersten Mal geöffnet wird.Wenn der Dynamic Link beim ersten Start Ihrer App nicht gefunden wird, wird diese Methode aufgerufen, wobei die
url
desDynamicLink
aufnil
gesetzt ist, was darauf hinweist, dass das SDK keinen passenden ausstehenden Dynamic Link gefunden hat.Schnell
Hinweis: Dieses Produkt ist nicht auf macOS-, Mac Catalyst-, tvOS- oder watchOS-Zielen verfügbar.@available(iOS 9.0, *) func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey: Any]) -> Bool { return application(app, open: url, sourceApplication: options[UIApplication.OpenURLOptionsKey .sourceApplication] as? String, annotation: "") } func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool { if let dynamicLink = DynamicLinks.dynamicLinks().dynamicLink(fromCustomSchemeURL: url) { // Handle the deep link. For example, show the deep-linked content or // apply a promotional offer to the user's account. // ... return true } return false }
Ziel c
Hinweis: Dieses Produkt ist nicht auf macOS-, Mac Catalyst-, tvOS- oder watchOS-Zielen verfügbar.- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *, id> *)options { return [self application:app openURL:url sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey] annotation:options[UIApplicationOpenURLOptionsAnnotationKey]]; } - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { FIRDynamicLink *dynamicLink = [[FIRDynamicLinks dynamicLinks] dynamicLinkFromCustomSchemeURL:url]; if (dynamicLink) { if (dynamicLink.url) { // Handle the deep link. For example, show the deep-linked content, // apply a promotional offer to the user's account or show customized onboarding view. // ... } else { // Dynamic link has empty deep link. This situation will happens if // Firebase Dynamic Links iOS SDK tried to retrieve pending dynamic link, // but pending link is not available for this device/App combination. // At this point you may display default onboarding view. } return YES; } return NO; }