Dynamische Links unter iOS erstellen

Mit der Firebase Dynamic Links Builder API kannst du 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 in den folgenden Beispielen zurück:

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

Vorbereitung

Bevor Sie beginnen, müssen Sie Firebase 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 (Weitere Verknüpfungsmerker) der Build-Einstellungen des Ziels hinzu.
  6. Für eine optimale Nutzung von Dynamic 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 oder mit IDFA-Erfassung auswählen.
  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 sich dieses. Sie müssen sie angeben, wenn Sie Dynamic Links programmatisch erstellen.

  3. Empfohlen: Geben Sie die in Ihren Deeplinks und Fallback-Links zulässigen URL-Muster an. So verhindern Sie, dass Unbefugte Dynamic Links erstellen, die von Ihrer Domain zu Websites weiterleiten, die nicht von Ihnen verwaltet werden. Weitere Informationen finden Sie unter Bestimmte URL-Muster zulassen.
  4. Achten Sie darauf, dass die App Store-ID und das App-ID-Präfix in den App-Einstellungen 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 für die Verwendung von Dynamic Links in Ihrer iOS-App richtig konfiguriert ist. Öffnen Sie dazu die apple-app-site-association-Datei, die auf Ihrer Dynamic Links-Domain gehostet wird. Firebase stellt die Datei apple-app-site-association aus dem Stammverzeichnis der Domain sowie aus dem 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 apple-app-site-association-Datei eine Referenz auf das App-ID-Präfix und die Paket-ID Ihrer App. Beispiel:

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

    Wenn die Property details leer ist, prüfen Sie, ob Sie das Präfix Ihrer App-ID angegeben haben. Das Präfix Ihrer App-ID 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. 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;
    // ...
          
  2. Konfigurieren Sie eine freigegebene Instanz von FirebaseApp in der application(_:didFinishLaunchingWithOptions:)-Methode Ihres App-Delegierten:

    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 einen Anwendungsdelegierten erstellen und ihn über UIApplicationDelegateAdaptor oder NSApplicationDelegateAdaptor an Ihre App-Struktur anhängen. Außerdem müssen Sie App Delegate Swizzling deaktivieren. Weitere Informationen findest du 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-Konsole verwenden

Wenn Sie eine einzelne Dynamic Link generieren möchten, entweder zu Testzwecken oder damit Ihr Marketingteam ganz einfach einen Link erstellen kann, der beispielsweise in einem Beitrag in sozialen Medien verwendet werden kann, ist die einfachste Methode, die Firebase-Konsole aufzurufen und einen Link manuell anhand der Schritt-für-Schritt-Anleitung zu erstellen.

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-Objekt 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 über das Attribut url des Objekts ab oder den kurzen Link über shorten().

Im folgenden Minimalbeispiel wird ein langer Dynamic Link zu https://www.example.com/my-page erstellt, der 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);

Zum Erstellen eines kurzen Dynamic Link musst du einen DynamicLinkComponents auf dieselbe Weise erstellen und dann shorten() aufrufen.

Für die Erstellung eines Kurzlinks ist ein Netzwerkaufruf erforderlich. Anstatt den Link direkt zurückzugeben, akzeptiert shorten() einen Abschluss-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 Kurz-Dynamic Links mit einem 17-stelligen Linksuffix generiert, sodass es äußerst unwahrscheinlich ist, dass jemand einen gültigen Dynamic Link erraten kann. Falls in Ihrem Anwendungsfall keine Probleme durch das Erraten eines kurzen Links entstehen, sollten Sie Suffixe erstellen, die nur so lang wie nötig und eindeutig sind. 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);
}];
      

Sie können die Dynamic Link Builder API verwenden, um Dynamic Links mit einem der unterstützten Parameter zu erstellen. Weitere Informationen finden Sie in der API-Referenz.

Im folgenden Beispiel wird eine 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 Eigenschaften festlegen:

DynamicLinkComponents
Link

Der Link, über den Ihre App geöffnet wird. Geben Sie eine URL an, die Ihre App verarbeiten kann. Dies ist in der Regel der Inhalt oder die Nutzlast der App. Dadurch wird eine anwendungsspezifische Logik initiiert, z. B. wenn dem Nutzer ein Gutschein gutgeschrieben oder ein Begrüßungsbildschirm angezeigt wird. Dieser Link muss richtig formatiert und URL-codiert sein. Außerdem muss er entweder HTTP oder HTTPS verwenden und darf kein weiterer dynamischer Link sein.

domainURIPrefix Ihr Dynamic Link-URL-Präfix, das Sie in der Firebase-Konsole finden. Eine Dynamic Link-Domain sieht in etwa 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 diese Option an, wenn Ihre App nicht aus dem Play Store installiert werden soll, wenn sie nicht installiert ist, z. B. die Version des Inhalts im mobilen Web öffnen oder eine Werbeseite für Ihre App anzeigen.
minimumVersion Die versionCode der Mindestversion Ihrer App, in der der Link geöffnet werden kann. Wenn die installierte App eine ältere Version ist, wird der Nutzer zum Play Store weitergeleitet, um die App zu aktualisieren.
DynamicLinkIOSParameters
appStoreID Die App-Store-ID Ihrer App, mit der Nutzer zum App Store weitergeleitet werden, wenn die App nicht installiert ist
Fallback-URL Der Link, der geöffnet werden soll, wenn die App nicht installiert ist. Geben Sie hier an, was passieren soll, wenn die App nicht installiert ist. Sie können beispielsweise die mobile Webversion der Inhalte öffnen oder eine Werbeseite für Ihre App anzeigen lassen.
customScheme Das benutzerdefinierte URL-Schema Ihrer App, sofern es nicht mit der Bundle-ID Ihrer App übereinstimmt
iPad-Fallback-URL Der Link, der auf iPads geöffnet werden soll, wenn die App nicht installiert ist. Geben Sie diese Option an, wenn Ihre App nicht aus dem App Store installiert werden soll, wenn sie nicht installiert ist, z. B. die Webversion des Inhalts öffnen oder eine Werbeseite für Ihre App anzeigen.
iPadBundleID Die Bundle-ID der iOS-App, die auf iPads verwendet werden soll, um den Link zu öffnen. Die App muss auf der Übersichtsseite der Firebase-Konsole mit Ihrem Projekt verknüpft sein.
minimumAppVersion Die Versionsnummer der Mindestversion Ihrer App, mit der der Link geöffnet werden kann. Dieses Flag wird an Ihre App übergeben, wenn sie geöffnet wird. Ihre App muss dann entscheiden, was damit geschehen soll.
DynamicLinkNavigationInfoParameters
forcedWeiterleitungEnabled Wenn „1“ festgelegt ist, wird die Seite mit der App-Vorschau übersprungen, wenn die Dynamic Link geöffnet wird, und stattdessen wird zur App oder zum Store weitergeleitet. Über die App-Vorschauseite (standardmäßig aktiviert) können Nutzer zuverlässiger an das am besten geeignete Ziel weitergeleitet werden, wenn sie Dynamic Links in Apps öffnen. Wenn Sie jedoch davon ausgehen, dass Dynamic Link nur in Apps geöffnet werden soll, die Dynamic Links zuverlässig ohne diese Seite öffnen können, können Sie sie mit diesem Parameter deaktivieren. Dieser Parameter wirkt sich nur auf iOS-Geräten auf das Verhalten der Dynamic Link aus.
DynamicLinkSocialMetaTagParameters
Titel Der Titel, der verwendet werden soll, wenn die Dynamic Link in einem Beitrag in sozialen Medien geteilt wird.
descriptionText Die Beschreibung, die verwendet wird, wenn Dynamic Link in einem Beitrag in sozialen Medien geteilt wird.
imageURL Die URL zu einem Bild, das mit diesem Link verknüpft ist. 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 Play Store übergeben und an die Linknutzlast angehängt.
DynamicLinkItunesConnectAnalyticsParameter
providerToken
affiliateToken
campaignToken
iTunes Connect-Analyseparameter Diese Parameter (pt, at, ct) werden an den App Store übergeben.

Wenn du eine lange Dynamic Link verkürzen möchtest, gib die lange Dynamic Link zusammen mit einem DynamicLinkComponentsOptions-Objekt an shortenURL(url:options:) weiter, um einen Link mit einem kurzen Suffix zu generieren:

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 der Anwendung erforderlich ist. Wir empfehlen, diesen Standardwert beizubehalten, um die Implementierung zu vereinfachen.

Entwickler, die bereits ein benutzerdefiniertes URL-Schema für andere Zwecke verwenden, können dasselbe benutzerdefinierte URL-Schema auch für ihre Dynamic Links verwenden. In diesem Fall können Sie ein anderes URL-Schema für Ihre Firebase Dynamic Links angeben. Gehen Sie dazu so vor:

  1. Geben Sie beim Einrichten Ihrer App das Standard-URL-Schema an, das von Ihrer Anwendung verwendet werden soll, bevor Sie Ihre 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. Sie können dies über die Firebase-Konsole tun, indem Sie den 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 Sie Dynamic Links erstellt haben, müssen Sie Ihre App so einrichten, dass sie Dynamic Links empfängt und Nutzer nach dem Öffnen an die richtige Stelle in Ihrer App weiterleitet.

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