Damit die
von Ihnen erstellte Firebase Dynamic Links empfangen werden kann, müssen Sie das Dynamic Links SDK in Ihre App einbinden und beim Laden der App die Methoden handleUniversalLink:
und dynamicLinkFromCustomSchemeURL:
aufrufen, um die im Dynamic Link übergebenen Daten abzurufen.
Vorbereitung
Bevor Sie beginnen, müssen Sie Firebase Ihrem iOS-Projekt hinzufügen.
Firebase und das Dynamic Links SDK einrichten
Verwenden Sie Swift Package Manager, um Firebase-Abhängigkeiten zu installieren und zu verwalten.
- Öffnen Sie Ihr App-Projekt und gehen Sie in Xcode zu File > Add Packages (Datei > Pakete hinzufügen).
- Fügen Sie bei entsprechender Aufforderung das Firebase Apple Platforms SDK-Repository hinzu:
- Wählen Sie die Bibliothek Dynamic Links aus.
- Fügen Sie das Flag
-ObjC
im Abschnitt Other Linker Flags (Weitere Verknüpfungsmerker) der Build-Einstellungen des Ziels hinzu. - Für eine optimale Nutzung von Dynamic Links empfehlen wir, Google Analytics in Ihrem Firebase-Projekt zu aktivieren und Ihrer App das Firebase SDK for Google Analytics hinzuzufügen. Sie können entweder die Bibliothek ohne IDFA-Sammlung oder mit IDFA-Sammlung auswählen.
- Wenn Sie fertig, beginnt Xcode automatisch, Ihre Abhängigkeiten im Hintergrund aufzulösen und herunterzuladen.
https://github.com/firebase/firebase-ios-sdk.git
Führen Sie nun einige Konfigurationsschritte aus:
- Öffnen Sie in der Firebase Console den Bereich Dynamic Links. Akzeptieren Sie die Nutzungsbedingungen, wenn Sie dazu aufgefordert werden.
-
Achten Sie darauf, dass die App Store-ID und das App-ID-Präfix in den App-Einstellungen angegeben sind. Wenn Sie die Einstellungen Ihrer App aufrufen und bearbeiten möchten, rufen Sie die Seite „Einstellungen“ Ihres Firebase-Projekts auf und wählen Sie Ihre iOS-App aus.
Sie können prüfen, ob Ihr Firebase-Projekt für die Verwendung von Dynamic Links in Ihrer iOS-App richtig konfiguriert ist. Öffnen Sie dazu die folgende URL:
https://your_dynamic_links_domain/apple-app-site-association
Wenn Ihre App verbunden ist, enthält die
apple-app-site-association
-Datei eine Referenz auf das App-ID-Präfix und die Bundle-ID Ihrer App. Beispiel:{"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["NOT /_/*","/*"]}]}}
Wenn das Feld
details
leer ist, prüfen Sie, ob Sie das Präfix Ihrer App-ID angegeben haben. Das Präfix Ihrer App-ID ist möglicherweise nicht mit Ihrer Team-ID identisch. -
Optional: Deaktiviere die Verwendung des iOS-Zwischenspeichers durch das Dynamic Links SDK.
Standardmäßig verwendet das Dynamic Links SDK das Zwischenablage-Objekt, um die Zuverlässigkeit von Deeplinks nach der Installation zu verbessern. Mit dem Zwischenablage-Tool kann Dynamic Links dafür sorgen, dass Nutzer, die eine Dynamic Link öffnen, aber zuerst Ihre App installieren müssen, nach der Installation direkt zu den ursprünglichen verknüpften Inhalten gelangen, wenn sie die App zum ersten Mal öffnen.
Der Nachteil dabei ist, dass die Verwendung des Zwischenspeichers unter iOS 14 und höher eine Benachrichtigung auslöst. Wenn Nutzer Ihre Anwendung zum ersten Mal öffnen und die Zwischenablage eine URL enthält, wird ihnen eine Benachrichtigung angezeigt, dass Ihre Anwendung auf die Zwischenablage zugegriffen hat. Dies 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.
Dynamic Links in der App öffnen
- Erstellen Sie auf dem Tab Info des Xcode-Projekts Ihrer App einen neuen URL-Typ, der für Dynamic Links verwendet werden soll. Legen Sie für das Feld Identifier einen eindeutigen Wert und für das Feld URL scheme (URL-Schema) die Paket-ID fest. Das ist das Standard-URL-Schema, das von Dynamic Links verwendet wird.
- Aktivieren Sie auf dem Tab Funktionen des Xcode-Projekts Ihrer App die Option „Verknüpfte Domains“ und fügen Sie der Liste Verknüpfte Domains Folgendes hinzu:
applinks:your_dynamic_links_domain
- Wenn Sie Dynamic Links mit einer vollständig benutzerdefinierten Domain empfangen möchten, erstellen Sie in der Datei
Info.plist
Ihres Xcode-Projekts einen Schlüssel namensFirebaseDynamicLinksCustomDomains
und legen Sie dafür die Dynamic Links-URL-Präfixe Ihrer Anwendung fest. Beispiel:FirebaseDynamicLinksCustomDomains https://example.com/promos https://example.com/links/share - Importieren Sie das
FirebaseCore
-Modul in IhreUIApplicationDelegate
sowie alle anderen Firebase-Module, die Ihr App-Delegat verwendet. So verwenden Sie beispielsweise Cloud Firestore und Authentication:SwiftUI
import SwiftUI import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Swift
import FirebaseCore import FirebaseFirestore import FirebaseAuth // ...
Objective-C
@import FirebaseCore; @import FirebaseFirestore; @import FirebaseAuth; // ...
- Konfigurieren Sie in der Methode
application(_:didFinishLaunchingWithOptions:)
des Anwendungsdelegats eine freigegebene InstanzFirebaseApp
:SwiftUI
// Use Firebase library to configure APIs FirebaseApp.configure()
Swift
// Use Firebase library to configure APIs FirebaseApp.configure()
Objective-C
// Use Firebase library to configure APIs [FIRApp configure];
- Wenn Sie SwiftUI verwenden, müssen Sie einen Anwendungsdelegierten erstellen und über
UIApplicationDelegateAdaptor
oderNSApplicationDelegateAdaptor
an dasApp
-Objekt anhängen. Außerdem müssen Sie App Delegate Swizzling deaktivieren. Weitere Informationen finden Sie in der SwiftUI-Anleitung.SwiftUI
@main struct YourApp: App { // register app delegate for Firebase setup @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate var body: some Scene { WindowGroup { NavigationView { ContentView() } } } }
- Verarbeiten Sie als Nächstes in der
application:continueUserActivity:restorationHandler:
-Methode Links, die als universelle Links empfangen wurden, wenn die App bereits installiert ist:Swift
Hinweis: Dieses Produkt ist nicht für macOS-, Mac Catalyst-, tvOS- oder watchOS-Ziele 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 }
Objective-C
Hinweis:Dieses Produkt ist nicht für macOS-, Mac Catalyst-, tvOS- oder watchOS-Ziele 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 können Sie in
application:openURL:options:
Links verarbeiten, die über das benutzerdefinierte URL-Schema Ihrer App empfangen wurden. Diese Methode wird aufgerufen, wenn deine App nach der Installation zum ersten Mal geöffnet wird.Wenn Dynamic Link beim ersten Start deiner App nicht gefunden wird, wird diese Methode aufgerufen, wobei
url
derDynamicLink
aufnil
gesetzt ist. Dies weist darauf hin, dass das SDK keine passende ausstehende Dynamic Link finden konnte.Swift
Hinweis: Dieses Produkt ist nicht für macOS-, Mac Catalyst-, tvOS- oder watchOS-Ziele 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 }
Objective-C
Hinweis: Dieses Produkt ist nicht für macOS-, Mac Catalyst-, tvOS- oder watchOS-Ziele 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; }