Catch up on highlights from Firebase at Google I/O 2023. Learn more

Erstellen Sie dynamische Links auf iOS

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, das Parameter für dynamische Links enthält, und gibt URLs wie in den folgenden Beispielen 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 .

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

  1. Navigieren Sie in Xcode bei geöffnetem App-Projekt zu File > Add Packages .
  2. Wenn Sie dazu aufgefordert werden, fügen Sie das Firebase Apple-Plattform-SDK-Repository hinzu:
  3.   https://github.com/firebase/firebase-ios-sdk
  4. Wählen Sie die Bibliothek für dynamische Links.
  5. 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.
  6. Wenn Sie fertig sind, beginnt Xcode automatisch mit dem Auflösen und Herunterladen Ihrer Abhängigkeiten im Hintergrund.

Führen Sie nun einige Konfigurationsschritte durch:

  1. Öffnen Sie in der Firebase-Konsole den Abschnitt Dynamische Links .
  2. 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 ein URI-Präfix für dynamische Links haben, notieren Sie es sich. Sie müssen es angeben, wenn Sie programmgesteuert dynamische Links erstellen.

  3. Empfohlen : Geben Sie die in Ihren Deep-Links und Fallback-Links zulässigen URL-Muster an. Dadurch hindern Sie Unbefugte daran, dynamische Links zu erstellen, die von Ihrer Domain auf Websites weiterleiten, die Sie nicht kontrollieren. Siehe Bestimmte URL-Muster zulassen .
  4. 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.

    Bestätigen Sie, dass Ihr Firebase-Projekt richtig konfiguriert ist, um dynamische Links in Ihrer iOS-App zu verwenden, indem Sie die apple-app-site-association Datei öffnen, die in Ihrer Domäne für dynamische Links gehostet wird. Firebase stellt die apple-app-site-association Datei aus dem Stammverzeichnis der Domain sowie aus dem Unterverzeichnis .well-known 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 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":["/*"]}]}}

    Wenn die details Eigenschaft 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.

Fügen Sie Ihrer App Firebase hinzu

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

Verwenden Sie die Firebase-Konsole

Wenn Sie einen einzelnen dynamischen Link generieren möchten, entweder zu Testzwecken oder für Ihr Marketingteam, um einfach einen Link zu erstellen, der beispielsweise in einem Social-Media-Beitrag verwendet werden kann, ist es am einfachsten, die Firebase-Konsole zu besuchen 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.

Um einen dynamischen Link zu erstellen, erstellen Sie ein neues DynamicLinkComponents Objekt und geben Sie die Parameter für den dynamischen Link 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 ab, 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

Hinweis: Dieses Firebase-Produkt ist auf macOS-, Mac Catalyst-, tvOS- oder watchOS-Zielen nicht 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)")

Ziel c

Hinweis: Dieses Firebase-Produkt ist auf macOS-, Mac Catalyst-, tvOS- oder watchOS-Zielen nicht 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);

Um einen kurzen dynamischen Link zu erstellen, erstellen Sie auf die gleiche Weise eine DynamicLinkComponents und rufen Sie dann shorten() auf.

Das Erstellen eines Short-Links erfordert einen Netzwerkaufruf, also akzeptiert shorten() einen Completion-Handler, anstatt den Link direkt zurückzugeben, der aufgerufen wird, wenn die Anfrage abgeschlossen ist. Zum Beispiel:

Schnell

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

Ziel c

Hinweis: Dieses Firebase-Produkt ist auf macOS-, Mac Catalyst-, tvOS- oder watchOS-Zielen nicht 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 dynamische Links mit 17-stelligen Link-Suffixen generiert, die es äußerst unwahrscheinlich machen, dass jemand einen gültigen dynamischen Link erraten kann. Wenn es für Ihren Anwendungsfall nicht schadet, wenn jemand erfolgreich einen Kurzlink errät, ziehen Sie es vielleicht vor, Suffixe zu generieren, die nur so lang wie nötig sind, um eindeutig zu sein, was Sie tun können, indem Sie die Eigenschaft dynamicLinkComponentsOptions festlegen:

Schnell

Hinweis: Dieses Firebase-Produkt ist auf macOS-, Mac Catalyst-, tvOS- oder watchOS-Zielen nicht 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)")
}

Ziel c

Hinweis: Dieses Firebase-Produkt ist auf macOS-, Mac Catalyst-, tvOS- oder watchOS-Zielen nicht 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 dynamische Links mit jedem der unterstützten Parameter zu erstellen. Einzelheiten finden Sie in der API-Referenz .

Das folgende Beispiel erstellt einen dynamischen Link mit mehreren allgemeinen Parametersätzen:

Schnell

Hinweis: Dieses Firebase-Produkt ist auf macOS-, Mac Catalyst-, tvOS- oder watchOS-Zielen nicht 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)")

Ziel c

Hinweis: Dieses Firebase-Produkt ist auf macOS-, Mac Catalyst-, tvOS- oder watchOS-Zielen nicht 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:

DynamicLink-Komponenten
Verknüpfung

Der Link, mit dem Ihre App geöffnet wird. Geben Sie eine URL an, die Ihre App verarbeiten kann, in der Regel der Inhalt oder die Nutzlast der App, die eine App-spezifische Logik initiiert (z. B. dem Benutzer einen Coupon gutschreibt oder einen Willkommensbildschirm anzeigt). Dieser Link muss eine gut formatierte URL sein, ordnungsgemäß URL-codiert sein, entweder HTTP oder HTTPS verwenden und darf kein weiterer dynamischer Link sein.

domainURIPrefix Ihr URL-Präfix für den dynamischen Link, das Sie in der Firebase-Konsole finden. Eine Domäne mit dynamischem Link sieht wie in den folgenden Beispielen aus:
https://example.com/link
https://example.page.link
DynamicLinkAndroidParameter
Fallback-URL Der Link zum Öffnen, 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.
Mindestversion 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.
DynamicLinkIOSParameter
appStoreID Die App Store-ID Ihrer App, die verwendet wird, um Benutzer an den App Store weiterzuleiten, wenn die App nicht installiert ist
Fallback-URL Der Link zum Öffnen, 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.
benutzerdefiniertes Schema Das benutzerdefinierte URL-Schema Ihrer App, falls als etwas anderes als die Paket-ID Ihrer App definiert
iPadFallbackURL Der Link zum Öffnen auf iPads, 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 Paket-ID der iOS-App, die auf iPads verwendet werden soll, um den Link zu öffnen. 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
forceRedirectEnabled Wenn der Wert auf „1“ gesetzt ist, wird die App-Vorschauseite übersprungen, wenn der dynamische Link geöffnet wird, und stattdessen zur App oder zum Store weitergeleitet. Die App-Vorschauseite (standardmäßig aktiviert) kann Benutzer zuverlässiger an das am besten geeignete Ziel senden, wenn sie dynamische Links in Apps öffnen; Wenn Sie jedoch erwarten, dass ein dynamischer Link nur in Apps geöffnet wird, die dynamische Links zuverlässig ohne diese Seite öffnen können, können Sie ihn mit diesem Parameter deaktivieren. Dieser Parameter wirkt sich nur auf iOS auf das Verhalten des dynamischen Links aus.
DynamicLinkSocialMetaTagParameter
Titel Der zu verwendende Titel, wenn der dynamische Link in einem sozialen Beitrag geteilt wird.
BeschreibungText Die zu verwendende Beschreibung, wenn der dynamische Link in einem sozialen 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.
DynamicLinkGoogleAnalyticsParameter
Quelle
Mittel
Kampagne
Begriff
Inhalt
Analyseparameter von Google Play. Diese Parameter ( utm_source , utm_medium , utm_campaign , utm_term , utm_content ) werden sowohl an den Play Store weitergegeben als auch an die Link-Payload angehängt.
DynamicLinkItunesConnectAnalyticsParameters
AnbieterToken
Affiliate-Token
CampaignToken
iTunes Connect-Analyseparameter. Diese Parameter ( pt , at , ct ) werden an den App Store übergeben.

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

Hinweis: Dieses Firebase-Produkt ist auf macOS-, Mac Catalyst-, tvOS- oder watchOS-Zielen nicht 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)")
}

Ziel c

Hinweis: Dieses Firebase-Produkt ist auf macOS-, Mac Catalyst-, tvOS- oder watchOS-Zielen nicht 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 die Bundle-ID Ihrer App als URL-Schema, das zum Öffnen Ihrer Anwendung erforderlich ist. Wir empfehlen, bei diesem Standardwert zu bleiben, 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 Firebase Dynamic Links angeben, indem Sie die folgenden Schritte ausführen:

  1. Stellen Sie beim Einrichten Ihrer App sicher, dass Sie das von Ihrer Anwendung zu verwendende Standard-URL-Schema angeben, bevor Sie Ihre freigegebene FirebaseApp Instanz konfigurieren:

    Schnell

    Hinweis: Dieses Firebase-Produkt ist auf macOS-, Mac Catalyst-, tvOS- oder watchOS-Zielen nicht 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 auf macOS-, Mac Catalyst-, tvOS- oder watchOS-Zielen nicht 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. Wann immer 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 das customScheme in der Builder-API festlegen, den ius Parameter in Ihrer URL angeben oder den iosCustomScheme Parameter an die REST-API senden

Nächste Schritte

Nachdem Sie 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.

Um dynamische Links in Ihrer App zu erhalten, lesen Sie die Dokumentation für iOS , Android , C++ und Unity .