Um die von Ihnen erstellten Firebase Dynamic Links zu erhalten, müssen Sie das SDK für dynamische Links in Ihre App einschließen und die Methoden handleUniversalLink:
und dynamicLinkFromCustomSchemeURL:
aufrufen, wenn Ihre App geladen wird, um die Daten im dynamischen Link zu übergeben.
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-Plattform-SDK-Repository hinzu:
- Wählen Sie die Bibliothek für dynamische Links.
- Für ein optimales Erlebnis mit dynamischen Links empfehlen wir, Google Analytics in Ihrem Firebase-Projekt zu aktivieren und Ihrer App das Firebase SDK für Google Analytics 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 dem Auflösen und Herunterladen Ihrer Abhängigkeiten im Hintergrund.
https://github.com/firebase/firebase-ios-sdk
Führen Sie nun einige Konfigurationsschritte durch:
- Ö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 Ihrer App 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 richtig konfiguriert ist, um dynamische Links in Ihrer iOS-App zu verwenden, indem Sie die folgende URL öffnen:
https://your_dynamic_links_domain/apple-app-site-association
Wenn Ihre App verbunden ist, enthält die
apple-app-site-association
Datei 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, ob Sie Ihr App-ID-Präfix angegeben haben. Beachten Sie, dass Ihr App-ID-Präfix möglicherweise nicht mit Ihrer Team-ID identisch ist.Optional : Deaktivieren Sie die Verwendung des Dynamic Links SDK für die iOS-Einfügeablage.
Standardmäßig verwendet das Dynamic Links SDK die Zwischenablage, um die Zuverlässigkeit von Deep Links nach der Installation zu verbessern. Durch die Verwendung der Zwischenablage können dynamische Links sicherstellen, dass, wenn ein Benutzer einen dynamischen Link öffnet, aber zuerst Ihre App installieren muss, der Benutzer beim ersten Öffnen der App nach der Installation sofort zum ursprünglich verlinkten Inhalt wechseln kann.
Der Nachteil dabei ist, dass die Verwendung der Zwischenablage eine Benachrichtigung auf iOS 14 und höher auslöst. Wenn Benutzer Ihre App also zum ersten Mal öffnen und die Zwischenablage eine URL enthält, sehen sie eine Benachrichtigung, dass Ihre App auf die Zwischenablage zugegriffen hat, was zu Verwirrung führen kann.
Um dieses Verhalten zu deaktivieren, bearbeiten Sie
Info.plist
Datei Ihres Xcode-Projekts und legen Sie den SchlüsselFirebaseDeepLinkPasteboardRetrievalEnabled
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. Setzen Sie das Feld Identifier auf einen eindeutigen Wert und das Feld URL-Schema auf Ihren Bundle-Identifikator, der das von Dynamic Links verwendete Standard-URL-Schema ist.
- Aktivieren Sie auf der Registerkarte „Funktionen“ des Xcode-Projekts Ihrer App „Associated Domains“ und fügen Sie Folgendes zur Liste „Associated Domains“ 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 namensFirebaseDynamicLinksCustomDomains
und legen Sie ihn auf die URL-Präfixe für dynamische Links Ihrer App fest. Zum 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. So verwenden Sie beispielsweise Cloud Firestore und Authentifizierung: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 freigegebene
FirebaseApp
Instanz in der Methodeapplication(_:didFinishLaunchingWithOptions:)
Ihres App-Delegaten: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 anfügen. Sie müssen auch das Swizzling von App-Delegaten 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() } } } }
- Behandeln Sie als Nächstes in der
application:continueUserActivity:restorationHandler:
Links, die als universelle Links empfangen wurden, wenn die App bereits installiert ist:Schnell
Hinweis: Dieses Produkt ist auf macOS-, Mac Catalyst-, tvOS- oder watchOS-Zielen nicht 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 auf macOS-, Mac Catalyst-, tvOS- oder watchOS-Zielen nicht 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, in
application:openURL:options:
Behandeln Sie Links, die über das benutzerdefinierte URL-Schema Ihrer App empfangen wurden. Diese Methode wird aufgerufen, wenn Ihre App nach der Installation zum ersten Mal geöffnet wird.Wenn der dynamische 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 dynamischen Link finden konnte.Schnell
Hinweis: Dieses Produkt ist auf macOS-, Mac Catalyst-, tvOS- oder watchOS-Zielen nicht 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 auf macOS-, Mac Catalyst-, tvOS- oder watchOS-Zielen nicht 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; }