Dynamische Links unter iOS erstellen

Mit der Firebase Dynamic Links Builder API können Sie kurze oder lange Dynamic Links erstellen. Diese API akzeptiert entweder eine lange Dynamic Link oder ein Objekt mit Dynamic Link-Parametern und gibt URLs wie die folgenden Beispiele zurück:

https://example.com/link/WXYZ
https://example.page.link/WXYZ

Vorbereitung

Bevor Sie beginnen, müssen Sie Firebase zu Ihrem iOS-Projekt hinzufügen.

Verwenden Sie Swift Package Manager, um Firebase-Abhängigkeiten zu installieren und zu verwalten.

  1. Öffnen Sie Ihr App-Projekt und gehen Sie in Xcode zu File > Add Packages (Datei > Pakete hinzufügen).
  2. Fügen Sie bei entsprechender Aufforderung das Firebase Apple Platforms SDK-Repository hinzu:
  3.   https://github.com/firebase/firebase-ios-sdk.git
  4. Wählen Sie die Bibliothek Dynamic Links aus.
  5. Fügen Sie das Flag -ObjC im Abschnitt Other Linker Flags (Andere Linker-Flags) der Build-Einstellungen Ihres Ziels hinzu.
  6. 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.
  7. Wenn Sie fertig, beginnt Xcode automatisch, Ihre Abhängigkeiten im Hintergrund aufzulösen und herunterzuladen.

Führen Sie nun einige Konfigurationsschritte aus:

  1. Öffnen Sie in der Firebase Console den Bereich Dynamic Links.
  2. Wenn Sie die Nutzungsbedingungen noch nicht akzeptiert und kein URI-Präfix für Ihre Dynamic Links festgelegt haben, tun Sie dies, wenn Sie dazu aufgefordert werden.

    Wenn Sie bereits ein Dynamic Links-URI-Präfix haben, notieren Sie es sich. Sie müssen sie angeben, wenn Sie Dynamic Links programmatisch erstellen.

  3. Empfohlen: Geben Sie die URL-Muster an, die in Ihren Deeplinks und Fallback-Links zulässig sind. So verhindern Sie, dass Unbefugte Dynamic Links erstellen, die von Ihrer Domain zu Websites weiterleiten, die Sie nicht kontrollieren. Weitere Informationen finden Sie unter Bestimmte URL-Muster zulassen.
  4. 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.

    Prüfen Sie, ob Ihr Firebase-Projekt richtig für die Verwendung von Dynamic Links in Ihrer iOS-App konfiguriert ist. Öffnen Sie dazu die Datei apple-app-site-association, die in Ihrer Dynamic Links-Domain gehostet wird. Firebase stellt die Datei apple-app-site-association sowohl im Stammverzeichnis der Domain als auch im Unterverzeichnis .well-known bereit. 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 Paket-ID Ihrer App. Beispiel:

    {"applinks":{"apps":[],"details":[{"appID":"1234567890.com.example.ios","paths":["/*"]}]}}

    Wenn das Attribut details leer 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.

Firebase zu Ihrer Anwendung hinzufügen

  1. Importieren Sie das FirebaseCore-Modul in Ihre UIApplicationDelegate sowie 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;
    // ...
          
  2. Konfigurieren Sie in der application(_:didFinishLaunchingWithOptions:)-Methode des App-Delegats eine freigegebene FirebaseApp-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];
  3. Wenn Sie SwiftUI verwenden, müssen Sie ein App-Delegat erstellen und es über UIApplicationDelegateAdaptor oder NSApplicationDelegateAdaptor an Ihre App-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()
          }
        }
      }
    }
          

Firebase Console verwenden

Wenn Sie einen einzelnen Dynamic Link generieren möchten, entweder zu Testzwecken oder damit Ihr Marketingteam einen Link erstellen kann, der sich beispielsweise in einem Social-Media-Post verwenden lässt, rufen Sie am besten die Firebase-Konsole auf und erstellen Sie einen Link manuell, indem Sie das Formular Schritt für Schritt ausfüllen.

iOS Builder API verwenden

Mit der iOS Builder API können Sie Dynamic Links aus Parametern erstellen oder eine lange Dynamic Link kürzen.

Wenn Sie ein Dynamic Link erstellen möchten, erstellen Sie ein neues DynamicLinkComponents-Objekt und geben Sie die Dynamic Link-Parameter an, indem Sie die entsprechenden Attribute des Objekts festlegen. Rufe dann den langen Link aus dem Attribut url des Objekts ab oder rufe den Kurzlink ab, indem du shorten() aufrufst.

Im folgenden Minimalbeispiel wird eine lange Dynamic Link für https://www.example.com/my-page erstellt, die unter iOS mit Ihrer iOS-App und unter Android mit der App com.example.android geöffnet wird:

Swift

Hinweis:Dieses Firebase-Produkt ist nicht für macOS-, Mac Catalyst-, tvOS- oder watchOS-Ziele verfügbar.
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)")

Objective-C

Hinweis:Dieses Firebase-Produkt ist nicht für macOS-, Mac Catalyst-, tvOS- oder watchOS-Ziele verfügbar.
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);

Wenn Sie eine kurze Dynamic Link erstellen möchten, erstellen Sie auf dieselbe Weise eine DynamicLinkComponents und rufen Sie dann shorten() auf.

Zum Erstellen eines Kurzlinks ist ein Netzwerkaufruf erforderlich. Daher wird der Link nicht direkt zurückgegeben, sondern shorten() akzeptiert einen Completion Handler, der aufgerufen wird, wenn die Anfrage abgeschlossen ist. Beispiel:

Swift

Hinweis:Dieses Firebase-Produkt ist nicht für macOS-, Mac Catalyst-, tvOS- oder watchOS-Ziele verfügbar.
linkBuilder.shorten() { url, warnings, error in
  guard let url = url, error != nil else { return }
  print("The short URL is: \(url)")
}

Objective-C

Hinweis:Dieses Firebase-Produkt ist nicht für macOS-, Mac Catalyst-, tvOS- oder watchOS-Ziele verfügbar.
[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 Dynamic Links mit 17-stelligen Link-Suffixen generiert, sodass es extrem unwahrscheinlich ist, dass jemand eine gültige Dynamic Link erraten kann. Wenn es für Ihren Anwendungsfall kein Problem ist, wenn jemand einen Kurzlink errät, können Sie Suffixe generieren, die nur so lang sind, wie es für die Eindeutigkeit erforderlich ist. Dazu legen Sie das Attribut dynamicLinkComponentsOptions fest:

Swift

Hinweis:Dieses Firebase-Produkt ist nicht für macOS-, Mac Catalyst-, tvOS- oder watchOS-Ziele verfügbar.
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)")
}

Objective-C

Hinweis:Dieses Firebase-Produkt ist nicht für macOS-, Mac Catalyst-, tvOS- oder watchOS-Ziele verfügbar.
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);
}];
      

Mit der Dynamic Link Builder API können Sie Dynamic Links mit allen unterstützten Parametern erstellen. Weitere Informationen finden Sie in der API-Referenz.

Im folgenden Beispiel wird ein Dynamic Link mit mehreren gängigen Parametern erstellt:

Swift

Hinweis:Dieses Firebase-Produkt ist nicht für macOS-, Mac Catalyst-, tvOS- oder watchOS-Ziele verfügbar.
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)")

Objective-C

Hinweis:Dieses Firebase-Produkt ist nicht für macOS-, Mac Catalyst-, tvOS- oder watchOS-Ziele verfügbar.
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 Attributen festlegen:

DynamicLinkComponents
Link

Der Link, der in Ihrer App geöffnet wird. Gib eine URL an, die deine App verarbeiten kann, in der Regel den Inhalt oder die Nutzlast der App, die eine App-spezifische Logik initiiert (z. B. das Gutschreiben eines Gutscheins für den Nutzer oder das Anzeigen eines Begrüßungsbildschirms). Dieser Link muss eine korrekt 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-Domain sieht so aus:
https://example.com/link
https://example.page.link
DynamicLinkAndroidParameters
fallbackURL Der Link, der geöffnet werden soll, wenn die App nicht installiert ist. Geben Sie dies an, wenn Sie etwas anderes tun möchten, als Ihre App aus dem Google Play Store zu installieren, wenn die App nicht installiert ist, z. B. die mobile Webversion des Inhalts öffnen oder eine Werbeseite für Ihre App anzeigen.
minimumVersion Die versionCode der Mindestversion Ihrer App, mit der der Link geöffnet werden kann. Wenn die installierte App eine ältere Version ist, wird der Nutzer zum Google Play Store weitergeleitet, um die App zu aktualisieren.
DynamicLinkIOSParameters
appStoreID Die App Store-ID Ihrer App, über die Nutzer zum App Store weitergeleitet werden, wenn die App nicht installiert ist
fallbackURL Der Link, der geöffnet werden soll, wenn die App nicht installiert ist. Geben Sie dies an, wenn Sie etwas anderes tun möchten, als Ihre App aus dem App Store zu installieren, wenn die App nicht installiert ist, z. B. die mobile Webversion des Inhalts öffnen oder eine Werbeseite für Ihre App anzeigen.
customScheme Das benutzerdefinierte URL-Schema Ihrer App, falls es nicht mit der Paket-ID Ihrer App übereinstimmt
iPadFallbackURL Der Link, der auf iPads geöffnet werden soll, wenn die App nicht installiert ist. Gib hier an, was passieren soll, wenn die App nicht aus dem App Store installiert ist, z. B. dass die Webversion des Inhalts geöffnet oder eine Werbeseite für deine App angezeigt werden soll.
iPadBundleID Die Paket-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 ältesten Version Ihrer App, mit der der Link geöffnet werden kann. Dieses Flag wird beim Öffnen an Ihre App übergeben. Ihre App muss dann entscheiden, was damit geschehen soll.
DynamicLinkNavigationInfoParameters
forcedRedirectEnabled Wenn der Wert auf „1“ gesetzt ist, wird die App-Vorschauseite übersprungen, wenn die Dynamic Link geöffnet wird. Stattdessen wird der Nutzer zur App oder zum Store weitergeleitet. Über die App-Vorschauseite (standardmäßig aktiviert) können Nutzer zuverlässiger zum am besten geeigneten Ziel weitergeleitet werden, wenn sie Dynamic Links in Apps öffnen. Wenn Sie jedoch davon ausgehen, dass ein Dynamic Link nur in Apps geöffnet wird, die Dynamic Links auch ohne diese Seite zuverlässig öffnen können, können Sie sie mit diesem Parameter deaktivieren. Dieser Parameter wirkt sich nur unter iOS auf das Verhalten des Dynamic Link aus.
DynamicLinkSocialMetaTagParameters
Titel Der Titel, der verwendet werden soll, wenn der Dynamic Link in einem Beitrag in sozialen Medien geteilt wird.
descriptionText Die Beschreibung, die verwendet werden soll, wenn die Dynamic Link in einem Beitrag in sozialen Medien geteilt wird.
imageURL Die URL zu einem Bild, das sich auf diesen Link bezieht. Das Bild sollte mindestens 300 × 200 Pixel groß und kleiner als 300 KB sein.
DynamicLinkGoogleAnalyticsParameters
source
medium
campaign
term
content
Google Play-Analyseparameter. Diese Parameter (utm_source, utm_medium, utm_campaign, utm_term, utm_content) werden an den Google Play Store weitergegeben und an die Link-Nutzlast angehängt.
DynamicLinkItunesConnectAnalyticsParameters
providerToken
affiliateToken
campaignToken
iTunes Connect-Analyseparameter. Diese Parameter (pt, at, ct) werden an den App Store übergeben.

Wenn Sie eine lange Dynamic Link kürzen möchten, übergeben Sie die lange Dynamic Link an shortenURL(url:options:), zusammen mit einem DynamicLinkComponentsOptions-Objekt, wenn Sie einen Link mit einem kurzen Suffix generieren möchten:

Swift

Hinweis:Dieses Firebase-Produkt ist nicht für macOS-, Mac Catalyst-, tvOS- oder watchOS-Ziele verfügbar.
DynamicLinkComponents.shortenURL(url: longLinkUrl, options: nil) { url, warnings, error in
  guard let url = url, error != nil else { return }
  print("The short URL is: \(url)")
}

Objective-C

Hinweis:Dieses Firebase-Produkt ist nicht für macOS-, Mac Catalyst-, tvOS- oder watchOS-Ziele verfügbar.
[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);
}];

Standardmäßig verwendet Dynamic Links den Paket-Identifikator Ihrer App als URL-Schema, das zum Öffnen Ihrer Anwendung erforderlich ist. Wir empfehlen, diesen Standardwert beizubehalten, um die Implementierung einfach zu halten.

Entwickler, die bereits ein benutzerdefiniertes URL-Schema für andere Zwecke verwenden, möchten dieses benutzerdefinierte URL-Schema möglicherweise auch für ihre Dynamic Links verwenden. In diesem Fall können Sie mit den folgenden Schritten ein anderes URL-Schema für Ihre Firebase Dynamic Links angeben:

  1. Geben Sie beim Einrichten Ihrer App das Standard-URL-Schema an, das von Ihrer Anwendung verwendet werden soll, bevor Sie die freigegebene FirebaseApp-Instanz konfigurieren:

    Swift

    Hinweis:Dieses Firebase-Produkt ist nicht für macOS-, Mac Catalyst-, tvOS- oder watchOS-Ziele 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
    }

    Objective-C

    Hinweis:Dieses Firebase-Produkt ist nicht für macOS-, Mac Catalyst-, tvOS- oder watchOS-Ziele 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;
    }
  2. Wenn Sie eine Dynamic Link erstellen, müssen Sie das benutzerdefinierte URL-Schema angeben, das Ihre App verwendet. Dazu können Sie die Firebase-Konsole verwenden, customScheme in der Builder API festlegen, den Parameter ius in Ihrer URL angeben oder den Parameter iosCustomScheme an die REST API senden.

Nächste Schritte

Nachdem du Dynamic Links erstellt hast, musst du deine App so einrichten, dass sie Dynamic Links empfängt und Nutzer nach dem Öffnen an die richtige Stelle in deiner App weiterleitet.

Informationen zum Empfangen von Dynamic Links in Ihrer App finden Sie in der Dokumentation für iOS, Android, C++ und Unity.