Um die Firebase Dynamic Links zu erhalten, die
verwenden, müssen Sie das Dynamic Links SDK in Ihre App einbinden und die Methode
handleUniversalLink:
und dynamicLinkFromCustomSchemeURL:
, wenn Ihre App geladen wird, um die im Dynamic Link übergebenen Daten abzurufen.
Vorbereitung
Fügen Sie Ihrem iOS-Gerät Firebase hinzu, Projekt.
Firebase und das Dynamic Links SDK einrichten
Verwenden Sie Swift Package Manager, um Firebase-Abhängigkeiten zu installieren und zu verwalten.
- Gehen Sie in Xcode bei geöffnetem App-Projekt zu File > Pakete hinzufügen.
- Fügen Sie bei entsprechender Aufforderung das Firebase Apple Platforms SDK-Repository hinzu:
- Wählen Sie die Dynamic Links-Bibliothek aus.
- Fügen Sie in den Build-Einstellungen des Ziels im Bereich Other Linker Flags das Flag
-ObjC
hinzu. - Für eine optimale Nutzung von Dynamic Links empfehlen wir Google Analytics wird aktiviert in Ihrem Firebase-Projekt und fügen Ihrer App das Firebase SDK für Google Analytics hinzu. Sie können wählen Sie entweder die Bibliothek ohne IDFA-Sammlung oder mit IDFA-Sammlung aus.
- 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-Konsole den 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 App-Einstellungen festgelegt ist. Wenn Sie die Einstellungen Ihrer App aufrufen und bearbeiten möchten, gehen Sie zu auf das Einstellungen 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 deine App verbunden ist, enthält die Datei
apple-app-site-association
eine Referenz an das App-ID-Präfix und die Bundle-ID Ihrer App an. Beispiel:{"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["NOT /_/*","/*"]}]}}
Wenn das Feld
details
leer ist, prüfen Sie noch einmal, ob Ihre Angaben Ihr App-ID-Präfix. Das Präfix der App-ID darf nicht mit Ihrer Team-ID identisch sein. -
Optional: Deaktivieren Sie im Dynamic Links SDK die Verwendung des iOS- in die Zwischenablage einfügen.
Standardmäßig verwendet das Dynamic Links SDK die Zwischenablage, um die sind die Deeplinks nach der Installation zuverlässig. Über die Zwischenablage können Dynamic Links kann dafür sorgen, dass ein Nutzer Dynamic Link öffnet, aber Ihre Datei kann der Nutzer sofort zu den ursprünglich verlinkten Inhalten wechseln, wenn die App nach der Installation zum ersten Mal geöffnet wird.
Der Nachteil ist, dass durch die Verwendung der unter iOS 14 und höher. Wenn Nutzende Ihre App zum ersten Mal öffnen, enthält die Zwischenablage eine URL, wird eine Benachrichtigung angezeigt, App auf die Zwischenablage zugegriffen hat, was zu Verwirrung führen kann.
Wenn Sie dieses Verhalten deaktivieren möchten, bearbeiten Sie die Datei
Info.plist
Ihres Xcode-Projekts und legen Sie den SchlüsselFirebaseDeepLinkPasteboardRetrievalEnabled
aufNO
fest.
Öffne Dynamic Links in deiner App
- Erstellen Sie auf dem Tab Info des Xcode-Projekts Ihrer App ein neues URL-Typ, der für Dynamic Links verwendet werden soll. Legen Sie die ID in einen eindeutigen Wert und das Feld URL-Schema, ist Ihr Paket-Identifikator (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 einem
vollständig benutzerdefinierte Domain, in
in der Datei
Info.plist
Ihres Xcode-Projekts einen Schlüssel namensFirebaseDynamicLinksCustomDomains
und lege fest, Dynamic Links URL-Präfixe. Beispiel:FirebaseDynamicLinksCustomDomains https://example.com/promos https://example.com/links/share - Importieren Sie das Modul
FirebaseCore
in IhrUIApplicationDelegate
sowie alle anderen Firebase-Module, die Ihr App-Delegate 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 ein
FirebaseApp
freigegebene Instanz im Methodeapplication(_:didFinishLaunchingWithOptions:)
: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 diesen anhängen.
zu deiner
App
-Struktur überUIApplicationDelegateAdaptor
oderNSApplicationDelegateAdaptor
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() } } } }
- Als Nächstes werden in der Methode
application:continueUserActivity:restorationHandler:
empfangene Links als verarbeitet. Universelle Links, 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; }
- Handle-Links in
application:openURL:options:
die über das Schema für benutzerdefinierte URLs Ihrer App empfangen werden. Diese Methode wird aufgerufen, Ihre App nach der Installation zum ersten Mal geöffnet wird.Wenn die Dynamic Link beim ersten Start deiner App nicht gefunden wird, wird diese Methode mit dem Der
url
vonDynamicLink
wurde aufnil
festgelegt, was darauf hindeutet, dass das SDK konnte keinen passenden ausstehenden Dynamic Link finden.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; }