Mit der Firebase Dynamic Links Builder API können Sie kurze oder lange dynamische Links erstellen. Diese API akzeptiert entweder einen langen dynamischen Link oder ein Objekt mit dynamischen Link-Parametern und gibt URLs wie die folgenden Beispiele zurück:
https://example.com/link/WXYZ https://example.page.link/WXYZ
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“ .
Wenn Sie die Nutzungsbedingungen noch nicht akzeptiert und ein URI-Präfix für Ihre dynamischen Links festgelegt haben, tun Sie dies, wenn Sie dazu aufgefordert werden.
Wenn Sie bereits über ein Dynamic Links-URI-Präfix verfügen, notieren Sie es sich. Sie müssen es bereitstellen, wenn Sie dynamische Links programmgesteuert erstellen.
- Empfohlen : Geben Sie die URL-Muster an, die in Ihren Deep-Links und Fallback-Links zulässig sind. Auf diese Weise verhindern Sie, dass Unbefugte dynamische Links erstellen, die von Ihrer Domain auf Websites weiterleiten, die nicht von Ihnen kontrolliert werden. Siehe Spezifische URL-Muster zulassen .
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.
Bestätigen Sie, dass Ihr Firebase-Projekt ordnungsgemäß für die Verwendung dynamischer Links in Ihrer iOS-App konfiguriert ist, indem Sie die Datei
apple-app-site-association
öffnen, die in Ihrer Dynamic Links-Domäne gehostet wird. Firebase stellt dieapple-app-site-association
Datei aus dem Stammverzeichnis der Domain sowie dem.well-known
Unterverzeichnis bereit. Zum Beispiel:https://example.com/apple-app-site-association https://example.com/.well-known/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":["/*"]}]}}
Wenn die Eigenschaft
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.
Fügen Sie Firebase zu Ihrer App hinzu
- 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() } } } }
Verwenden Sie die Firebase-Konsole
Wenn Sie einen einzelnen dynamischen Link generieren möchten, entweder zu Testzwecken oder damit Ihr Marketingteam ganz einfach einen Link erstellen kann, der beispielsweise in einem Social-Media-Beitrag verwendet werden kann, ist es am einfachsten, die Firebase-Konsole aufzurufen und einen zu erstellen manuell dem Schritt-für-Schritt-Formular folgen.
Verwenden Sie die iOS Builder-API
Sie können die iOS Builder-API verwenden, um dynamische Links aus Parametern zu erstellen oder einen langen dynamischen Link zu kürzen.
Erstellen Sie einen dynamischen Link aus Parametern
Um einen dynamischen Link zu erstellen, erstellen Sie ein neues DynamicLinkComponents
Objekt und geben Sie die Parameter des dynamischen Links an, indem Sie die entsprechenden Eigenschaften des Objekts festlegen. Rufen Sie dann den langen Link aus der url
Eigenschaft des Objekts ab oder rufen Sie den kurzen Link auf, indem Sie shorten()
aufrufen.
Das folgende Minimalbeispiel erstellt einen langen dynamischen Link zu https://www.example.com/my-page
, der mit Ihrer iOS-App auf iOS und der App com.example.android
auf Android geöffnet wird:
Schnell
guard let link = URL(string: "https://www.example.com/my-page") else { return } let dynamicLinksDomainURIPrefix = "https://example.com/link" let linkBuilder = DynamicLinkComponents(link: link, domainURIPrefix: dynamicLinksDomainURIPRefix) linkBuilder.iOSParameters = DynamicLinkIOSParameters(bundleID: "com.example.ios") linkBuilder.androidParameters = DynamicLinkAndroidParameters(packageName: "com.example.android") guard let longDynamicLink = linkBuilder.url else { return } print("The long URL is: \(longDynamicLink)")
Ziel c
NSURL *link = [[NSURL alloc] initWithString:@"https://www.example.com/my-page"]; NSString *dynamicLinksDomainURIPrefix = @"https://example.com/link"; FIRDynamicLinkComponents *linkBuilder = [[FIRDynamicLinkComponents alloc] initWithLink:link domainURIPrefix:dynamicLinksDomainURIPrefix]; linkBuilder.iOSParameters = [[FIRDynamicLinkIOSParameters alloc] initWithBundleID:@"com.example.ios"]; linkBuilder.androidParameters = [[FIRDynamicLinkAndroidParameters alloc] initWithPackageName:@"com.example.android"]; NSLog(@"The long URL is: %@", linkBuilder.url);
Um einen kurzen dynamischen Link zu erstellen, erstellen Sie auf die gleiche Weise DynamicLinkComponents
und rufen Sie dann shorten()
auf.
Der Aufbau eines kurzen Links erfordert einen Netzwerkaufruf. Anstatt den Link direkt zurückzugeben, akzeptiert shorten()
einen Abschlusshandler, der aufgerufen wird, wenn die Anfrage abgeschlossen ist. Zum Beispiel:
Schnell
linkBuilder.shorten() { url, warnings, error in guard let url = url, error != nil else { return } print("The short URL is: \(url)") }
Ziel c
[linkBuilder shortenWithCompletion:^(NSURL * _Nullable shortURL, NSArray<NSString *> * _Nullable warnings, NSError * _Nullable error) { if (error || shortURL == nil) { return; } NSLog(@"The short URL is: %@", shortURL); }];
Standardmäßig werden kurze dynamische Links mit 17-stelligen Link-Suffixen generiert, wodurch es äußerst unwahrscheinlich ist, dass jemand einen gültigen dynamischen Link erraten kann. Wenn es für Ihren Anwendungsfall nicht schadet, wenn jemand einen kurzen Link erfolgreich errät, möchten Sie vielleicht lieber Suffixe generieren, die nur so lang sind, wie nötig, um eindeutig zu sein, was Sie erreichen können, indem Sie die Eigenschaft dynamicLinkComponentsOptions
festlegen:
Schnell
linkBuilder.options = DynamicLinkComponentsOptions() linkBuilder.options.pathLength = .short linkBuilder.shorten() { url, warnings, error in guard let url = url, error != nil else { return } print("The short URL is: \(url)") }
Ziel c
linkBuilder.dynamicLinkComponentsOptions = [[FIRDynamicLinkComponentsOptions alloc] init]; linkBuilder.dynamicLinkComponentsOptions.pathLength = FIRShortDynamicLinkPathLengthShort; [linkBuilder shortenWithCompletion:^(NSURL * _Nullable shortURL, NSArray<NSString *> * _Nullable warnings, NSError * _Nullable error) { if (error || shortURL == nil) { return; } NSLog(@"The short URL is: %@", shortURL); }];
Dynamic Link-Parameter
Sie können die Dynamic Link Builder-API verwenden, um dynamische Links mit jedem der unterstützten Parameter zu erstellen. Weitere Informationen finden Sie in der API-Referenz .
Das folgende Beispiel erstellt einen dynamischen Link mit mehreren allgemeinen Parametersätzen:
Schnell
guard let link = URL(string: "https://www.example.com/my-page") else { return } let dynamicLinksDomainURIPrefix = "https://example.com/link" let linkBuilder = DynamicLinkComponents(link: link, domainURIPRefix: dynamicLinksDomainURIPrefix) linkBuilder.iOSParameters = DynamicLinkIOSParameters(bundleID: "com.example.ios") linkBuilder.iOSParameters.appStoreID = "123456789" linkBuilder.iOSParameters.minimumAppVersion = "1.2.3" linkBuilder.androidParameters = DynamicLinkAndroidParameters(packageName: "com.example.android") linkBuilder.androidParameters.minimumVersion = 123 linkBuilder.analyticsParameters = DynamicLinkGoogleAnalyticsParameters(source: "orkut", medium: "social", campaign: "example-promo") linkBuilder.iTunesConnectParameters = DynamicLinkItunesConnectAnalyticsParameters() linkBuilder.iTunesConnectParameters.providerToken = "123456" linkBuilder.iTunesConnectParameters.campaignToken = "example-promo" linkBuilder.socialMetaTagParameters = DynamicLinkSocialMetaTagParameters() linkBuilder.socialMetaTagParameters.title = "Example of a Dynamic Link" linkBuilder.socialMetaTagParameters.descriptionText = "This link works whether the app is installed or not!" linkBuilder.socialMetaTagParameters.imageURL = "https://www.example.com/my-image.jpg" guard let longDynamicLink = linkBuilder.url else { return } print("The long URL is: \(longDynamicLink)")
Ziel c
NSURL *link = [[NSURL alloc] initWithString:@"https://www.example.com/my-page"]; NSString *dynamicLinksDomainURIPrefix = @"https://example.com/link"; FIRDynamicLinkComponents *linkBuilder = [[FIRDynamicLinkComponents alloc] initWithLink:link domainURIPrefix:dynamicLinksDomainURIPrefix]; linkBuilder.iOSParameters = [[FIRDynamicLinkIOSParameters alloc] initWithBundleID:@"com.example.ios"]; linkBuilder.iOSParameters.appStoreID = @"123456789"; linkBuilder.iOSParameters.minimumAppVersion = @"1.2.3"; linkBuilder.androidParameters = [[FIRDynamicLinkAndroidParameters alloc] initWithPackageName:@"com.example.android"]; linkBuilder.androidParameters.minimumVersion = 123; linkBuilder.analyticsParameters = [[FIRDynamicLinkGoogleAnalyticsParameters alloc] initWithSource:@"orkut" medium:@"social" campaign:@"example-promo"]; linkBuilder.iTunesConnectParameters = [[FIRDynamicLinkItunesConnectAnalyticsParameters alloc] init]; linkBuilder.iTunesConnectParameters.providerToken = @"123456"; linkBuilder.iTunesConnectParameters.campaignToken = @"example-promo"; linkBuilder.socialMetaTagParameters = [[FIRDynamicLinkSocialMetaTagParameters alloc] init]; linkBuilder.socialMetaTagParameters.title = @"Example of a Dynamic Link"; linkBuilder.socialMetaTagParameters.descriptionText = @"This link works whether the app is installed or not!"; linkBuilder.socialMetaTagParameters.imageURL = @"https://www.example.com/my-image.jpg"; NSLog(@"The long URL is: %@", linkBuilder.url);
Sie können Dynamic Link-Parameter mit den folgenden Objekten und Eigenschaften festlegen:
DynamicLinkComponents | |
---|---|
Verknüpfung | Der Link, über den Ihre App geöffnet wird. Geben Sie eine URL an, die Ihre App verarbeiten kann, normalerweise der Inhalt oder die Nutzlast der App, die app-spezifische Logik initiiert (z. B. die Gutschrift eines Gutscheins an den Benutzer oder die Anzeige eines Begrüßungsbildschirms). Dieser Link muss eine gut formatierte URL sein, ordnungsgemäß URL-codiert sein, entweder HTTP oder HTTPS verwenden und darf kein anderer dynamischer Link sein. |
domainURIPrefix | Ihr Dynamic Link-URL-Präfix, das Sie in der Firebase-Konsole finden. Eine Dynamic Link-Domäne sieht wie in den folgenden Beispielen aus: https://example.com/link https://example.page.link |
DynamicLinkAndroidParameters | |
---|---|
FallbackURL | Der Link, der geöffnet wird, wenn die App nicht installiert ist. Geben Sie dies an, um etwas anderes zu tun, als Ihre App aus dem Play Store zu installieren, wenn die App nicht installiert ist, z. B. die mobile Webversion des Inhalts zu öffnen oder eine Werbeseite für Ihre App anzuzeigen. |
MinimumVersion | Der versionCode der Mindestversion Ihrer App, die den Link öffnen kann. Wenn es sich bei der installierten App um eine ältere Version handelt, wird der Benutzer zum Play Store weitergeleitet, um die App zu aktualisieren. |
DynamicLinkIOSParameters | |
---|---|
appStoreID | Die App Store-ID Ihrer App, mit der Benutzer zum App Store weitergeleitet werden, wenn die App nicht installiert ist |
FallbackURL | Der Link, der geöffnet wird, wenn die App nicht installiert ist. Geben Sie dies an, um etwas anderes zu tun, als Ihre App aus dem App Store zu installieren, wenn die App nicht installiert ist, z. B. die mobile Webversion des Inhalts zu öffnen oder eine Werbeseite für Ihre App anzuzeigen. |
customScheme | Das benutzerdefinierte URL-Schema Ihrer App, sofern es als etwas anderes als die Bundle-ID Ihrer App definiert ist |
iPadFallbackURL | Der Link wird auf iPads geöffnet, wenn die App nicht installiert ist. Geben Sie dies an, um etwas anderes zu tun, als Ihre App aus dem App Store zu installieren, wenn die App nicht installiert ist, z. B. die Webversion des Inhalts zu öffnen oder eine Werbeseite für Ihre App anzuzeigen. |
iPadBundleID | Die Bundle-ID der iOS-App, die auf iPads zum Öffnen des Links verwendet werden soll. Die App muss über die Übersichtsseite der Firebase-Konsole mit Ihrem Projekt verbunden sein. |
MinimumAppVersion | Die Versionsnummer der Mindestversion Ihrer App, die den Link öffnen kann. Dieses Flag wird beim Öffnen an Ihre App übergeben und Ihre App muss entscheiden, was damit geschehen soll. |
DynamicLinkNavigationInfoParameters | |
---|---|
forcedRedirectEnabled | Bei Einstellung auf „1“ wird die App-Vorschauseite übersprungen, wenn der Dynamic Link geöffnet wird, und stattdessen zur App oder zum Store weitergeleitet. Die App-Vorschauseite (standardmäßig aktiviert) kann Benutzer zuverlässiger zum am besten geeigneten Ziel weiterleiten, wenn sie dynamische Links in Apps öffnen. Wenn Sie jedoch erwarten, dass ein dynamischer Link nur in Apps geöffnet wird, die dynamische Links ohne diese Seite zuverlässig öffnen können, können Sie ihn mit diesem Parameter deaktivieren. Dieser Parameter wirkt sich nur auf iOS auf das Verhalten von Dynamic Link aus. |
DynamicLinkSocialMetaTagParameters | |
---|---|
Titel | Der Titel, der verwendet werden soll, wenn der dynamische Link in einem sozialen Beitrag geteilt wird. |
BeschreibungText | Die Beschreibung, die verwendet werden soll, wenn der dynamische Link in einem Social-Media-Beitrag geteilt wird. |
Bild URL | Die URL zu einem Bild, das sich auf diesen Link bezieht. Das Bild sollte mindestens 300 x 200 Pixel und weniger als 300 KB groß sein. |
DynamicLinkGoogleAnalyticsParameters | |
---|---|
Quelle Mittel Kampagne Begriff Inhalt | Analyseparameter von Google Play. Diese Parameter ( utm_source , utm_medium , utm_campaign , utm_term , utm_content ) werden an den Play Store weitergegeben und an die Link-Payload angehängt. |
DynamicLinkItunesConnectAnalyticsParameters | |
---|---|
AnbieterToken AffiliateToken KampagnenToken | Analyseparameter von iTunes Connect. Diese Parameter ( pt , at , ct ) werden an den App Store übergeben. |
Kürzen Sie einen langen dynamischen Link
Um einen langen dynamischen Link zu kürzen, übergeben Sie den langen dynamischen Link zusammen mit einem DynamicLinkComponentsOptions
Objekt an shortenURL(url:options:)
wenn Sie einen Link mit einem kurzen Suffix generieren möchten:
Schnell
DynamicLinkComponents.shortenURL(url: longLinkUrl, options: nil) { url, warnings, error in guard let url = url, error != nil else { return } print("The short URL is: \(url)") }
Ziel c
[FIRDynamicLinkComponents shortenURL:longLinkUrl options:nil completion:^(NSURL * _Nullable shortURL, NSArray<NSString *> * _Nullable warnings, NSError * _Nullable error) { if (error || shortURL == nil) { return; } NSLog(@"The short URL is: %@", shortURL); }];
Angeben eines benutzerdefinierten URL-Schemas für dynamische Links
Standardmäßig verwendet Dynamic Links die Bundle-ID Ihrer App als URL-Schema, das zum Öffnen Ihrer Anwendung erforderlich ist. Wir empfehlen, diesen Standardwert beizubehalten, um Ihre Implementierung einfach zu halten.
Entwickler, die bereits ein benutzerdefiniertes URL-Schema für andere Zwecke verwenden, möchten möglicherweise dasselbe benutzerdefinierte URL-Schema auch für ihre dynamischen Links verwenden. Wenn Sie sich in dieser Situation befinden, können Sie ein anderes URL-Schema für Ihre dynamischen Firebase-Links angeben, indem Sie die folgenden Schritte ausführen:
- Stellen Sie beim Einrichten Ihrer App sicher, dass Sie das von Ihrer Anwendung zu verwendende Standard-URL-Schema angeben, bevor Sie Ihre gemeinsam genutzte
FirebaseApp
Instanz konfigurieren:Schnell
Hinweis: Dieses Firebase-Produkt ist nicht auf macOS-, Mac Catalyst-, tvOS- oder watchOS-Zielen verfügbar.func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication .LaunchOptionsKey: Any]?) -> Bool { // Set deepLinkURLScheme to the custom URL scheme you defined in your // Xcode project. FirebaseOptions.defaultOptions()?.deepLinkURLScheme = customURLScheme FirebaseApp.configure() return true }
Ziel c
Hinweis: Dieses Firebase-Produkt ist nicht auf macOS-, Mac Catalyst-, tvOS- oder watchOS-Zielen verfügbar.- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Set deepLinkURLScheme to the custom URL scheme you defined in your // Xcode project. [FIROptions defaultOptions].deepLinkURLScheme = CUSTOM_URL_SCHEME; [FIRApp configure]; return YES; }
- Wenn Sie einen dynamischen Link erstellen, müssen Sie das benutzerdefinierte URL-Schema angeben, das Ihre App verwendet. Sie können dies über die Firebase-Konsole tun, indem Sie „
customScheme
in der Builder-API festlegen, denius
Parameter in Ihrer URL angeben oder deniosCustomScheme
-Parameter an die REST-API senden
Nächste Schritte
Nachdem Sie nun dynamische Links erstellt haben, müssen Sie Ihre App so einrichten, dass sie dynamische Links empfängt und Benutzer an die richtige Stelle in Ihrer App weiterleitet, nachdem ein Benutzer sie geöffnet hat.
Informationen zum Empfang dynamischer Links in Ihrer App finden Sie in der Dokumentation für iOS , Android , C++ und Unity .