Damit Sie die von Ihnen
erstellte Firebase Dynamic Links erhalten, müssen Sie das Dynamic Links SDK in Ihre App einbinden und die Methoden handleUniversalLink: und dynamicLinkFromCustomSchemeURL: aufrufen, wenn Ihre App geladen wird, um die in der Dynamic Link übergebenen Daten abzurufen.
Vorbereitung
Bevor Sie beginnen, müssen Sie Firebase zu 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
-ObjCim Abschnitt Other Linker Flags (Andere Linker-Flags) der Build-Einstellungen Ihres Ziels hinzu. - Für eine optimale Nutzung von Dynamic Links empfehlen wir, Google Analytics zu aktivieren und das Firebase SDK für Google Analytics in Ihre App einzubinden. Sie können entweder die Bibliothek ohne IDFA-Erfassung oder mit IDFA-Erfassung auswählen. Weitere Informationen finden Sie in den FAQs zur neuesten Organisation von Modulen im Google Analytics for Firebase SDK.
- 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 Ihrer App in den Einstellungen Ihrer App 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 richtig für die Verwendung von Dynamic 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 verknüpft ist, enthält die Datei
apple-app-site-associationeinen Verweis auf das App-ID-Präfix und die Paket-ID Ihrer App. Beispiel:{"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["NOT /_/*","/*"]}]}}Wenn das Feld
detailsleer ist, prüfen Sie, ob Sie das Präfix Ihrer App-ID angegeben haben. Das App-ID-Präfix ist möglicherweise nicht mit Ihrer Team-ID identisch. -
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 ein Nutzer, der einen Dynamic Link öffnet, aber zuerst Ihre App installieren muss, nach der Installation beim ersten Öffnen der App sofort zum ursprünglich verlinkten Inhalt gelangt.
Der Nachteil ist, dass die Verwendung der Zwischenablage unter iOS 14 und höher eine Benachrichtigung auslöst. Wenn Nutzer Ihre App zum ersten Mal öffnen und die Zwischenablage eine URL enthält, wird 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 setzen Sie den SchlüsselFirebaseDeepLinkPasteboardRetrievalEnabledaufNO.
Dynamic Links in der App öffnen
- Erstellen Sie im Xcode-Projekt Ihrer App auf dem Tab Info 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 Ihre Bundle-ID fest. Das ist das Standard-URL-Schema, das von Dynamic Links verwendet wird.
- Aktivieren Sie im Xcode-Projekt Ihrer App auf dem Tab Capabilities (Funktionen) die Option „Associated Domains“ (Verknüpfte Domains) und fügen Sie der Liste Associated Domains (Verknüpfte Domains) Folgendes hinzu:
applinks:your_dynamic_links_domain
- Wenn Sie Dynamic Links mit einer vollständig benutzerdefinierten Domain erhalten möchten, erstellen Sie in der
Info.plist-Datei Ihres Xcode-Projekts einen Schlüssel mit dem NamenFirebaseDynamicLinksCustomDomainsund legen Sie ihn auf die Dynamic Links-URL-Präfixe Ihrer App fest. Beispiel:FirebaseDynamicLinksCustomDomains https://example.com/promos https://example.com/links/share - Importieren Sie das
FirebaseCore-Modul in IhreUIApplicationDelegatesowie alle anderen Firebase-Module, die Ihr App-Delegat verwendet. Beispiel für die Verwendung von 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
application(_:didFinishLaunchingWithOptions:)-Methode des App-Delegats eine freigegebeneFirebaseApp-Instanz: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 ein App-Delegat erstellen und es über
UIApplicationDelegateAdaptoroderNSApplicationDelegateAdaptoran IhreApp-Struktur anhängen. Außerdem müssen Sie das Swizzling des App-Delegaten 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() } } } }
- Als Nächstes verarbeiten Sie in der Methode
application:continueUserActivity:restorationHandler:Links, die als universelle Links empfangen werden, wenn die App bereits installiert ist:Swift
Hinweis:Dieses Produkt ist nicht für macOS, Mac Catalyst, tvOS oder watchOS 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 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
> *_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; } - Verarbeite schließlich in
application:openURL:options:Links, die über das benutzerdefinierte URL-Schema deiner App empfangen werden. Diese Methode wird aufgerufen, wenn Ihre App nach der Installation zum ersten Mal geöffnet wird.Wenn die Dynamic Link beim ersten Start der App nicht gefunden wird, wird diese Methode aufgerufen, wobei die
urlderDynamicLinkaufnilgesetzt wird. Das bedeutet, dass das SDK keine passende ausstehende Dynamic Link gefunden hat.Swift
Hinweis:Dieses Produkt ist nicht für macOS, Mac Catalyst, tvOS oder watchOS 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 verfügbar.- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary
*)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; }