Catch up on everthing we announced at this year's Firebase Summit. Learn more

Erstellen Sie dynamische Links auf Android

Mit der Firebase Dynamic Links Builder API können Sie kurze oder lange dynamische Links erstellen. Diese API akzeptiert entweder einen langen 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

Bevor Sie dynamische Links in Ihrer Android-App erstellen können, müssen Sie das Firebase SDK einschließen. Wenn Ihre App für den Empfang dynamischer Links eingerichtet ist, haben Sie diese Schritte bereits ausgeführt und können diesen Abschnitt überspringen.

  1. Wenn Sie nicht bereits haben, fügen Sie Firebase zu dem Android - Projekt .

    Geben Sie bei der Registrierung Ihrer App Ihren SHA-1-Signaturschlüssel an. Wenn Sie App Links verwenden, geben Sie auch Ihren SHA-256-Schlüssel an.

  2. Mit Hilfe der Firebase Android BoM , erklärt die Abhängigkeit für die dynamischen Links Android - Bibliothek in Ihrem Modul (app-Ebene) Gradle Datei ( in der Regel app/build.gradle ).

    Für eine optimale Erfahrung mit dynamischen Verbindungen, empfehlen wir Google Analytics ermöglicht in Ihrem Firebase - Projekt und das Hinzufügen des Firebase SDK für Google Analytics in Ihrer App.

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:29.0.0')
    
        // Declare the dependencies for the Dynamic Links and Analytics libraries
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-dynamic-links'
        implementation 'com.google.firebase:firebase-analytics'
    }
    

    Durch die Verwendung des Firebase Android BoM werden, Ihre App immer kompatible Versionen der Firebase Android - Bibliotheken verwenden.

    (Alternative) Deklarieren Firebase Bibliothek Abhängigkeiten , ohne die BoM mit

    Wenn Sie die Firebase-Stückliste nicht verwenden möchten, müssen Sie jede Firebase-Bibliotheksversion in ihrer Abhängigkeitszeile angeben.

    Beachten Sie, dass , wenn Sie mehrere Firebase Bibliotheken in Ihrer Anwendung verwenden wir mit der BoM empfehlen Bibliothek Versionen zu verwalten, die sicherstellt , dass alle Versionen kompatibel sind.

    dependencies {
        // Declare the dependencies for the Dynamic Links and Analytics libraries
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-dynamic-links:21.0.0'
        implementation 'com.google.firebase:firebase-analytics:20.0.0'
    }
    

    Kotlin+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:29.0.0')
    
        // Declare the dependencies for the Dynamic Links and Analytics libraries
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-dynamic-links-ktx'
        implementation 'com.google.firebase:firebase-analytics-ktx'
    }
    

    Durch die Verwendung des Firebase Android BoM werden, Ihre App immer kompatible Versionen der Firebase Android - Bibliotheken verwenden.

    (Alternative) Deklarieren Firebase Bibliothek Abhängigkeiten , ohne die BoM mit

    Wenn Sie die Firebase-Stückliste nicht verwenden möchten, müssen Sie jede Firebase-Bibliotheksversion in ihrer Abhängigkeitszeile angeben.

    Beachten Sie, dass , wenn Sie mehrere Firebase Bibliotheken in Ihrer Anwendung verwenden wir mit der BoM empfehlen Bibliothek Versionen zu verwalten, die sicherstellt , dass alle Versionen kompatibel sind.

    dependencies {
        // Declare the dependencies for the Dynamic Links and Analytics libraries
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation 'com.google.firebase:firebase-dynamic-links-ktx:21.0.0'
        implementation 'com.google.firebase:firebase-analytics-ktx:20.0.0'
    }
    
  3. In der Konsole Firebase öffnet Abschnitt des dynamischen Links.
  4. Wenn Sie die Nutzungsbedingungen noch nicht akzeptiert und eine Domain für Ihre Dynamic Links festgelegt haben, tun Sie dies, wenn Sie dazu aufgefordert werden.

    Wenn Sie bereits über eine Dynamic Links-Domain verfügen, notieren Sie diese. Sie müssen eine Dynamic Links-Domäne bereitstellen, wenn Sie Dynamic Links programmgesteuert erstellen.

  5. Empfehlung: die URL - Muster in Ihren Deep - Links und Ausweich Links erlaubt angeben. Auf diese Weise verhindern Sie, dass Unbefugte dynamische Links erstellen, die von Ihrer Domain auf Websites umleiten, die Sie nicht kontrollieren. Siehe spezifische URL - Muster zulassen .

Verwenden der Firebase-Konsole

Wenn Sie einen einzelnen Dynamic Link, entweder für Testzwecke erstellt werden sollen, oder für Ihr Marketing - Team einfach einen Link zu erstellen, in so etwas wie eine Social - Media - Post verwendet werden kann, wäre der einfachste Weg , um die besuchen Firebase Konsole und erstellen eine manuell das Schritt-für-Schritt-Formular befolgen.

Um einen Dynamic Link zu erstellen, erstellen Sie ein neues DynamicLink Objekt mit seinem Builder, den Dynamic Link - Parameter mit den Builder Methoden angeben. Dann rufen buildDynamicLink oder buildShortDynamicLink .

Das folgende minimale Beispiel erzeugt einen langen Dynamic Link zu https://www.example.com/ , die mit Ihrem Android - App auf Android und die App öffnet com.example.ios auf iOS:

Java

DynamicLink dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://www.example.com/"))
        .setDomainUriPrefix("https://example.page.link")
        // Open links with this app on Android
        .setAndroidParameters(new DynamicLink.AndroidParameters.Builder().build())
        // Open links with com.example.ios on iOS
        .setIosParameters(new DynamicLink.IosParameters.Builder("com.example.ios").build())
        .buildDynamicLink();

Uri dynamicLinkUri = dynamicLink.getUri();

Kotlin+KTX

val dynamicLink = Firebase.dynamicLinks.dynamicLink {
    link = Uri.parse("https://www.example.com/")
    domainUriPrefix = "https://example.page.link"
    // Open links with this app on Android
    androidParameters { }
    // Open links with com.example.ios on iOS
    iosParameters("com.example.ios") { }
}

val dynamicLinkUri = dynamicLink.uri

Um eine kurze Dynamic Link zu erstellen, bauen eine DynamicLink die gleiche Art und Weise, und rufen Sie dann buildShortDynamicLink . Einen kurzen Linkaufbau erfordert einen Netzanruf, so anstatt direkt die Verbindung, Rückkehr buildShortDynamicLink kehrt eine Task , die die kurze Verbindung zur Verfügung , wenn die Anforderung abgeschlossen macht. Zum Beispiel:

Java

Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://www.example.com/"))
        .setDomainUriPrefix("https://example.page.link")
        // Set parameters
        // ...
        .buildShortDynamicLink()
        .addOnCompleteListener(this, new OnCompleteListener<ShortDynamicLink>() {
            @Override
            public void onComplete(@NonNull Task<ShortDynamicLink> task) {
                if (task.isSuccessful()) {
                    // Short link created
                    Uri shortLink = task.getResult().getShortLink();
                    Uri flowchartLink = task.getResult().getPreviewLink();
                } else {
                    // Error
                    // ...
                }
            }
        });

Kotlin+KTX

val shortLinkTask = Firebase.dynamicLinks.shortLinkAsync {
    link = Uri.parse("https://www.example.com/")
    domainUriPrefix = "https://example.page.link"
    // Set parameters
    // ...
}.addOnSuccessListener { (shortLink, flowchartLink) ->
    // You'll need to import com.google.firebase.dynamiclinks.ktx.component1 and
    // com.google.firebase.dynamiclinks.ktx.component2

    // Short link created
    processShortLink(shortLink, flowchartLink)
}.addOnFailureListener {
    // Error
    // ...
}

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 für Ihren Anwendungsfall, gibt es keinen Schaden in jemand erfolgreich eine kurze Verbindung zu erraten, können Sie es vorziehen , Suffixe zu erzeugen , die nur so lange wie nötig sind , einzigartig zu sein, die man , indem man tun kann ShortDynamicLink.Suffix.SHORT zum buildShortDynamicLink Verfahren :

Java

Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        // ...
        .buildShortDynamicLink(ShortDynamicLink.Suffix.SHORT);
        // ...

Kotlin+KTX

val shortLinkTask = Firebase.dynamicLinks.shortLinkAsync(ShortDynamicLink.Suffix.SHORT) {
    // Set parameters
    // ...
}

Sie können die Dynamic Link Builder API verwenden, um Dynamic Links mit jedem der unterstützten Parameter zu erstellen. Sehen Sie sich die API - Referenz für weitere Einzelheiten.

Im folgenden Beispiel wird ein dynamischer Link mit mehreren allgemeinen Parametersätzen erstellt:

Java

DynamicLink dynamicLink = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLink(Uri.parse("https://www.example.com/"))
        .setDomainUriPrefix("https://example.page.link")
        .setAndroidParameters(
                new DynamicLink.AndroidParameters.Builder("com.example.android")
                        .setMinimumVersion(125)
                        .build())
        .setIosParameters(
                new DynamicLink.IosParameters.Builder("com.example.ios")
                        .setAppStoreId("123456789")
                        .setMinimumVersion("1.0.1")
                        .build())
        .setGoogleAnalyticsParameters(
                new DynamicLink.GoogleAnalyticsParameters.Builder()
                        .setSource("orkut")
                        .setMedium("social")
                        .setCampaign("example-promo")
                        .build())
        .setItunesConnectAnalyticsParameters(
                new DynamicLink.ItunesConnectAnalyticsParameters.Builder()
                        .setProviderToken("123456")
                        .setCampaignToken("example-promo")
                        .build())
        .setSocialMetaTagParameters(
                new DynamicLink.SocialMetaTagParameters.Builder()
                        .setTitle("Example of a Dynamic Link")
                        .setDescription("This link works whether the app is installed or not!")
                        .build())
        .buildDynamicLink();  // Or buildShortDynamicLink()

Kotlin+KTX

val dynamicLink = Firebase.dynamicLinks.dynamicLink { // or Firebase.dynamicLinks.shortLinkAsync
    link = Uri.parse("https://www.example.com/")
    domainUriPrefix = "https://example.page.link"
    androidParameters("com.example.android") {
        minimumVersion = 125
    }
    iosParameters("com.example.ios") {
        appStoreId = "123456789"
        minimumVersion = "1.0.1"
    }
    googleAnalyticsParameters {
        source = "orkut"
        medium = "social"
        campaign = "example-promo"
    }
    itunesConnectAnalyticsParameters {
        providerToken = "123456"
        campaignToken = "example-promo"
    }
    socialMetaTagParameters {
        title = "Example of a Dynamic Link"
        description = "This link works whether the app is installed or not!"
    }
}

Sie können Dynamic Link-Parameter mit den folgenden Methoden festlegen:

DynamicLink-Parameter
setLink

Der Link, den Ihre App öffnet. Geben Sie eine URL an, die Ihre App verarbeiten kann, normalerweise den Inhalt oder die Nutzlast der App, die eine App-spezifische Logik initiiert (z. Dieser Link muss eine gut formatierte URL sein, ordnungsgemäß URL-codiert sein, entweder HTTP oder HTTPS verwenden und darf kein anderer dynamischer Link sein.

setDomainUriPrefix Ihr dynamisches Link-URL-Präfix, das Sie in der Firebase-Konsole finden. Eine Dynamic Link Domain sieht aus wie die folgenden Beispiele:
https://example.com/link
https://example.page.link
AndroidParameter
setFallbackUrl Der Link, der geöffnet werden soll, 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.
setMinimumVersion Die versionCode der Mindestversion der App, die den Link öffnen. Wenn es sich bei der installierten App um eine ältere Version handelt, wird der Benutzer zum Play Store weitergeleitet, um die App zu aktualisieren.
IosParameter
setAppStoreId Die App Store-ID Ihrer App, die verwendet wird, um Benutzer an den App Store zu senden, wenn die App nicht installiert ist
setFallbackUrl Der Link, der geöffnet werden soll, 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.
setCustomScheme Das benutzerdefinierte URL-Schema Ihrer App, wenn es anders als die Bundle-ID Ihrer App definiert ist
setIpadFallbackUrl 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.
setIpadBundleId 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.
setMinimumVersion Die Versionsnummer der Mindestversion der App, die den Link öffnen. Dieses Flag wird beim Öffnen an Ihre App übergeben, und Ihre App muss entscheiden, was damit geschehen soll.
NavigationsInfoParameter
setForcedRedirectEnabled Wenn auf '1' gesetzt, überspringen Sie die App-Vorschauseite, wenn der Dynamic Link geöffnet wird, und leiten Sie stattdessen zur App oder zum Store um. Die App-Vorschauseite (standardmäßig aktiviert) kann Benutzer zuverlässiger an das am besten geeignete Ziel weiterleiten, wenn sie dynamische Links in Apps öffnen. Wenn Sie jedoch erwarten, dass ein Dynamic Link nur in Apps geöffnet wird, die Dynamic Links ohne diese Seite zuverlässig öffnen können, können Sie ihn mit diesem Parameter deaktivieren. Dieser Parameter beeinflusst das Verhalten des Dynamic Link nur unter iOS.
SocialMetaTagParameter
setTitle Der zu verwendende Titel, wenn der dynamische Link in einem sozialen Beitrag geteilt wird.
setBeschreibung Die zu verwendende Beschreibung, wenn der dynamische Link in einem sozialen Beitrag geteilt wird.
setImageUrl 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.
GoogleAnalyticsParameter
setSource
setMedium
setKampagne
setTerm
setContent
Analyseparameter von Google Play. Diese Parameter ( utm_source , utm_medium , utm_campaign , utm_term , utm_content ) werden an der Play Store übergeben sowie an die Verbindungsnutzlast angehängt.
ItunesConnectAnalyticsParameter
setProviderToken
setAffiliateToken
setCampaignToken
iTunes Connect-Analyseparameter. Diese Parameter ( pt , at , ct ) mit den App - Speichern übergeben.

Um einen langen Dynamic Link, geben Sie die URL des Dynamic Link verwendet zu verkürzen setLongLink statt Einstellparameter mit den anderen Generator - Methoden:

Java

Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
        .setLongLink(Uri.parse("https://example.page.link/?link=https://www.example.com/&apn=com.example.android&ibn=com.example.ios"))
        .buildShortDynamicLink()
        .addOnCompleteListener(this, new OnCompleteListener<ShortDynamicLink>() {
            @Override
            public void onComplete(@NonNull Task<ShortDynamicLink> task) {
                if (task.isSuccessful()) {
                    // Short link created
                    Uri shortLink = task.getResult().getShortLink();
                    Uri flowchartLink = task.getResult().getPreviewLink();
                } else {
                    // Error
                    // ...
                }
            }
        });

Kotlin+KTX

val shortLinkTask = Firebase.dynamicLinks.shortLinkAsync {
    longLink = Uri.parse("https://example.page.link/?link=" +
            "https://www.example.com/&apn=com.example.android&ibn=com.example.ios")
}.addOnSuccessListener { (shortLink, flowChartLink) ->
    // You'll need to import com.google.firebase.dynamiclinks.ktx.component1 and
    // com.google.firebase.dynamiclinks.ktx.component2

    // Short link created
    processShortLink(shortLink, flowChartLink)
}.addOnFailureListener {
    // Error
    // ...
}