Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Twórz dynamiczne linki na Androida

Za pomocą interfejsu Firebase Dynamic Links Builder API możesz tworzyć krótkie lub długie linki dynamiczne. Ten interfejs API akceptuje albo długi link dynamiczny, albo obiekt zawierający parametry linku dynamicznego, i zwraca adresy URL, jak w poniższych przykładach:

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

Aby móc tworzyć linki dynamiczne w aplikacji na Androida, musisz dołączyć pakiet Firebase SDK. Jeśli Twoja aplikacja jest skonfigurowana do odbierania linków dynamicznych, te kroki zostały już wykonane i możesz pominąć tę sekcję.

  1. Jeśli jeszcze tego nie zrobiłeś, dodaj Firebase do swojego projektu na Androida .

    Podczas rejestrowania aplikacji określ klucz podpisywania SHA-1. Jeśli korzystasz z łączy aplikacji, podaj również swój klucz SHA-256.

  2. W pliku Gradle modułu (na poziomie aplikacji) (zwykle <project>/<app-module>/build.gradle ) dodaj zależność dla biblioteki Dynamic Links dla systemu Android. Zalecamy używanie Firebase Android BoM do kontrolowania wersji bibliotek.

    Aby zapewnić optymalne działanie Linków dynamicznych, zalecamy włączenie Google Analytics w projekcie Firebase i dodanie pakietu SDK Firebase dla Google Analytics do swojej aplikacji.

    Java

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:31.1.0')
    
        // Add 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'
    }
    

    Korzystając z Firebase Android BoM , Twoja aplikacja będzie zawsze używać zgodnych wersji bibliotek Firebase na Androida.

    (Alternatywnie) Dodaj zależności biblioteki Firebase bez korzystania z BoM

    Jeśli zdecydujesz się nie korzystać z BoM Firebase, musisz określić każdą wersję biblioteki Firebase w jej wierszu zależności.

    Pamiętaj, że jeśli korzystasz z wielu bibliotek Firebase w swojej aplikacji, zdecydowanie zalecamy używanie BoM do zarządzania wersjami bibliotek, co zapewnia zgodność wszystkich wersji.

    dependencies {
        // Add 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.1.0'
        implementation 'com.google.firebase:firebase-analytics:21.2.0'
    }
    

    Kotlin+KTX

    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:31.1.0')
    
        // Add 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'
    }
    

    Korzystając z Firebase Android BoM , Twoja aplikacja będzie zawsze używać zgodnych wersji bibliotek Firebase na Androida.

    (Alternatywnie) Dodaj zależności biblioteki Firebase bez korzystania z BoM

    Jeśli zdecydujesz się nie korzystać z BoM Firebase, musisz określić każdą wersję biblioteki Firebase w jej wierszu zależności.

    Pamiętaj, że jeśli korzystasz z wielu bibliotek Firebase w swojej aplikacji, zdecydowanie zalecamy używanie BoM do zarządzania wersjami bibliotek, co zapewnia zgodność wszystkich wersji.

    dependencies {
        // Add 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.1.0'
        implementation 'com.google.firebase:firebase-analytics-ktx:21.2.0'
    }
    
  3. W konsoli Firebase otwórz sekcję Linki dynamiczne .
  4. Jeśli nie zaakceptowałeś jeszcze warunków korzystania z usługi i ustawiłeś domenę dla swoich Linków dynamicznych, zrób to, gdy zostaniesz o to poproszony.

    Jeśli masz już domenę Dynamic Links, zanotuj to. Musisz podać domenę Dynamic Links podczas automatycznego tworzenia Linków dynamicznych.

  5. Zalecane : określ wzorce adresów URL dozwolone w precyzyjnych linkach i linkach zastępczych. W ten sposób uniemożliwiasz nieautoryzowanym stronom tworzenie linków dynamicznych, które przekierowują z Twojej domeny do witryn, których nie kontrolujesz. Zobacz Zezwalanie na określone wzorce adresów URL .

Użyj konsoli Firebase

Jeśli chcesz wygenerować pojedynczy link dynamiczny, albo do celów testowych, albo dla swojego zespołu marketingowego, aby łatwo utworzyć link, który można wykorzystać w czymś takim jak post w mediach społecznościowych, najprostszym sposobem jest odwiedzenie konsoli Firebase i utworzenie takiego linku ręcznie postępując zgodnie z formularzem krok po kroku.

Aby utworzyć łącze dynamiczne, utwórz nowy obiekt DynamicLink za pomocą jego Konstruktora, określając parametry łącza dynamicznego za pomocą metod Konstruktora. Następnie wywołaj buildDynamicLink lub buildShortDynamicLink .

Poniższy minimalny przykład tworzy długi link dynamiczny do https://www.example.com/ , który otwiera się w Twojej aplikacji na Androida na Androida i aplikacji com.example.ios na 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

Aby utworzyć krótki Dynamic Link, zbuduj DynamicLink w ten sam sposób, a następnie wywołaj buildShortDynamicLink . Budowanie krótkiego linku wymaga wywołania sieciowego, więc zamiast bezpośrednio zwracać link, buildShortDynamicLink zwraca Task , który udostępnia krótki link po zakończeniu żądania. Na przykład:

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
    // ...
}

Domyślnie krótkie linki dynamiczne są generowane z 17-znakowymi sufiksami linków, co sprawia, że ​​jest bardzo mało prawdopodobne, aby ktoś mógł odgadnąć prawidłowy link dynamiczny. Jeśli dla twojego przypadku użycia nie ma nic złego w tym, że ktoś pomyślnie odgadnie krótki link, możesz chcieć generować sufiksy, które są tylko tak długie, jak to konieczne, aby były unikalne, co możesz zrobić, przekazując ShortDynamicLink.Suffix.SHORT do metody buildShortDynamicLink :

Java

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

Kotlin+KTX

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

Możesz użyć interfejsu API Dynamic Link Builder do tworzenia dynamicznych linków z dowolnymi obsługiwanymi parametrami. Zobacz dokumentację API , aby uzyskać szczegółowe informacje.

Poniższy przykład tworzy łącze dynamiczne z kilkoma typowymi zestawami parametrów:

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!"
    }
}

Parametry łącza dynamicznego można ustawić za pomocą następujących metod:

Parametry DynamicLink
setLink

Link, który otworzy Twoja aplikacja. Określ adres URL, który aplikacja może obsłużyć, zazwyczaj zawartość lub ładunek aplikacji, który inicjuje logikę specyficzną dla aplikacji (np. przyznanie użytkownikowi kuponu lub wyświetlenie ekranu powitalnego). Ten link musi być poprawnie sformatowanym adresem URL, być prawidłowo zakodowanym adresem URL, używać protokołu HTTP lub HTTPS i nie może być innym linkiem dynamicznym.

setDomainUriPrefix Twój prefiks adresu URL linku dynamicznego, który znajdziesz w konsoli Firebase. Domena Dynamic Link wygląda następująco:
https://example.com/link
https://example.page.link
Parametry Androida
setFallbackUrl Link do otwarcia, gdy aplikacja nie jest zainstalowana. Określ to, aby zrobić coś innego niż instalowanie aplikacji ze Sklepu Play, gdy aplikacja nie jest zainstalowana, na przykład otworzyć mobilną wersję treści w internecie lub wyświetlić stronę promocyjną aplikacji.
ustaw minimalną wersję versionCode minimalnej wersji Twojej aplikacji, która może otworzyć link. Jeśli zainstalowana aplikacja jest starszą wersją, użytkownik zostanie przeniesiony do Sklepu Play, aby zaktualizować aplikację.
IosParametry
setAppStoreId Identyfikator App Store Twojej aplikacji, używany do wysyłania użytkowników do App Store, gdy aplikacja nie jest zainstalowana
setFallbackUrl Link do otwarcia, gdy aplikacja nie jest zainstalowana. Określ tę opcję, aby zrobić coś innego niż instalowanie aplikacji ze sklepu App Store, gdy aplikacja nie jest zainstalowana, na przykład otworzyć mobilną wersję treści w Internecie lub wyświetlić stronę promocyjną aplikacji.
setCustomScheme Niestandardowy schemat adresu URL Twojej aplikacji, jeśli został zdefiniowany jako coś innego niż identyfikator pakietu Twojej aplikacji
setIpadFallbackUrl Link do otwierania na iPadach, gdy aplikacja nie jest zainstalowana. Określ to, aby zrobić coś innego niż instalowanie aplikacji ze sklepu App Store, gdy aplikacja nie jest zainstalowana, na przykład otworzyć internetową wersję zawartości lub wyświetlić stronę promocyjną aplikacji.
setIpadBundleId Identyfikator pakietu aplikacji na iOS, który ma być używany na iPadach do otwierania linku. Aplikację należy połączyć z projektem na stronie Przegląd w konsoli Firebase.
ustaw minimalną wersję Numer wersji minimalnej wersji Twojej aplikacji, w której można otworzyć link. Ta flaga jest przekazywana do aplikacji po jej otwarciu, a aplikacja musi zdecydować, co z nią zrobić.
Nawigacja InfoParametry
setForcedRedirectEnabled Jeśli ustawiono na „1”, pomiń stronę podglądu aplikacji po otwarciu Linku dynamicznego i zamiast tego przekieruj do aplikacji lub sklepu. Strona podglądu aplikacji (domyślnie włączona) może bardziej niezawodnie wysyłać użytkowników do najbardziej odpowiedniego miejsca docelowego, gdy otworzą oni Dynamic Links w aplikacjach; Jeśli jednak oczekujesz, że Dynamic Link będzie otwierany tylko w aplikacjach, które mogą niezawodnie otwierać Dynamic Links bez tej strony, możesz go wyłączyć za pomocą tego parametru. Ten parametr wpłynie na zachowanie Dynamic Link tylko na iOS.
SocialMetaTagParametry
setTitle Tytuł używany, gdy link dynamiczny jest udostępniany w poście społecznościowym.
zestawOpis Opis do użycia, gdy link dynamiczny jest udostępniany w poście społecznościowym.
setImageUrl Adres URL obrazu powiązanego z tym linkiem. Obraz powinien mieć co najmniej 300x200 px i mniej niż 300 KB.
Parametry Google Analytics
setSource
setMedium
setCampaign
setTerm
setContent
Parametry analityczne Google Play. Te parametry ( utm_source , utm_medium , utm_campaign , utm_term , utm_content ) są przekazywane do Sklepu Play oraz dołączane do ładunku linku.
ItunesConnectAnalyticsParametry
setProviderToken
setAffiliateToken
setCampaignToken
Parametry analityczne iTunes Connect. Te parametry ( pt , at , ct ) są przekazywane do App Store.

Aby skrócić długie łącze dynamiczne, określ adres URL łącza dynamicznego za pomocą setLongLink zamiast ustawiania parametrów innymi metodami kreatora:

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
    // ...
}