获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

Crea collegamenti dinamici su Android

Puoi creare collegamenti dinamici brevi o lunghi con l'API Firebase Dynamic Links Builder. Questa API accetta un collegamento dinamico lungo o un oggetto contenente parametri di collegamento dinamico e restituisce URL come i seguenti esempi:

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

Prima di poter creare collegamenti dinamici nella tua app Android, devi includere l'SDK Firebase. Se la tua app è configurata per ricevere link dinamici, hai già completato questi passaggi e puoi saltare questa sezione.

  1. Se non l'hai già fatto, aggiungi Firebase al tuo progetto Android .

    Quando registri la tua app, specifica la tua chiave di firma SHA-1. Se utilizzi App Links, specifica anche la tua chiave SHA-256.

  2. Nel file Gradle del tuo modulo (a livello di app) (di solito <project>/<app-module>/build.gradle ), aggiungi la dipendenza per la libreria Android di Dynamic Links. Ti consigliamo di utilizzare la BoM Android di Firebase per controllare il controllo delle versioni della libreria.

    Per un'esperienza ottimale con Dynamic Links, ti consigliamo di abilitare Google Analytics nel tuo progetto Firebase e di aggiungere l'SDK Firebase per Google Analytics alla tua app.

    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'
    }
    

    Utilizzando la BoM Android di Firebase, la tua app utilizzerà sempre versioni compatibili delle librerie Android di Firebase.

    (Alternativa) Aggiungi le dipendenze della libreria Firebase senza utilizzare la distinta base

    Se scegli di non utilizzare la distinta base di Firebase, devi specificare ciascuna versione della libreria Firebase nella relativa riga di dipendenza.

    Tieni presente che se utilizzi più librerie Firebase nella tua app, ti consigliamo vivamente di utilizzare la distinta base per gestire le versioni delle librerie, il che garantisce che tutte le versioni siano compatibili.

    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'
    }
    

    Utilizzando la BoM Android di Firebase, la tua app utilizzerà sempre versioni compatibili delle librerie Android di Firebase.

    (Alternativa) Aggiungi le dipendenze della libreria Firebase senza utilizzare la distinta base

    Se scegli di non utilizzare la distinta base di Firebase, devi specificare ciascuna versione della libreria Firebase nella relativa riga di dipendenza.

    Tieni presente che se utilizzi più librerie Firebase nella tua app, ti consigliamo vivamente di utilizzare la distinta base per gestire le versioni delle librerie, il che garantisce che tutte le versioni siano compatibili.

    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. Nella console Firebase, apri la sezione Collegamenti dinamici .
  4. Se non hai già accettato i termini di servizio e impostato un dominio per i tuoi collegamenti dinamici, fallo quando richiesto.

    Se hai già un dominio Dynamic Links, prendine nota. È necessario fornire un dominio Collegamenti dinamici quando crei collegamenti dinamici a livello di codice.

  5. Consigliato : specifica i pattern URL consentiti nei link diretti e nei link di riserva. In questo modo, impedisci a parti non autorizzate di creare collegamenti dinamici che reindirizzano dal tuo dominio a siti che non controlli. Consulta Consenti pattern URL specifici .

Usa la console Firebase

Se desideri generare un singolo collegamento dinamico, sia a scopo di test, sia per consentire al tuo team di marketing di creare facilmente un collegamento che può essere utilizzato in qualcosa come un post sui social media, il modo più semplice sarebbe visitare la console Firebase e crearne uno manualmente seguendo il modulo passo passo.

Per creare un Dynamic Link, creare un nuovo oggetto DynamicLink con il suo Builder, specificando i parametri di Dynamic Link con i metodi del Builder. Quindi, chiama buildDynamicLink o buildShortDynamicLink .

L'esempio minimo seguente crea un collegamento dinamico lungo a https://www.example.com/ che si apre con la tua app Android su Android e l'app com.example.ios su 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

Per creare un collegamento dinamico breve, crea un collegamento dinamico allo stesso modo, quindi buildShortDynamicLink DynamicLink La creazione di un collegamento breve richiede una chiamata di rete, quindi invece di restituire direttamente il collegamento, buildShortDynamicLink restituisce un Task , che rende disponibile il collegamento breve al completamento della richiesta. Per esempio:

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

Per impostazione predefinita, i collegamenti dinamici brevi vengono generati con suffissi di collegamento di 17 caratteri che rendono estremamente improbabile che qualcuno possa indovinare un collegamento dinamico valido. Se, per il tuo caso d'uso, non c'è nulla di male in qualcuno che riesce a indovinare un collegamento breve, potresti preferire generare suffissi che sono lunghi solo quanto necessario per essere univoci, cosa che puoi fare passando ShortDynamicLink.Suffix.SHORT al metodo buildShortDynamicLink :

Java

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

Kotlin+KTX

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

Puoi utilizzare l'API Dynamic Link Builder per creare collegamenti dinamici con uno qualsiasi dei parametri supportati. Vedere il riferimento API per i dettagli.

L'esempio seguente crea un collegamento dinamico con diversi parametri comuni impostati:

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

È possibile impostare i parametri di Dynamic Link con i seguenti metodi:

parametri DynamicLink
setLink

Il link che si aprirà la tua app. Specifica un URL che l'app può gestire, in genere il contenuto o il payload dell'app, che avvia la logica specifica dell'app (ad esempio accreditando all'utente un coupon o visualizzando una schermata di benvenuto). Questo collegamento deve essere un URL ben formattato, codificato correttamente nell'URL, utilizzare HTTP o HTTPS e non può essere un altro collegamento dinamico.

setDomainUriPrefix Il tuo prefisso URL Dynamic Link, che puoi trovare nella console Firebase. Un dominio Dynamic Link è simile ai seguenti esempi:
https://example.com/link
https://example.page.link
Parametri Android
setFallbackUrl Il collegamento da aprire quando l'app non è installata. Specifica questa opzione per fare qualcosa di diverso dall'installare l'app dal Play Store quando l'app non è installata, ad esempio aprire la versione Web mobile del contenuto o visualizzare una pagina promozionale per la tua app.
setMinimumVersion Il versionCode della versione minima della tua app che può aprire il link. Se l'app installata è una versione precedente, l'utente viene indirizzato al Play Store per aggiornare l'app.
IosParameters
setAppStoreId L'ID dell'App Store della tua app, utilizzato per inviare gli utenti all'App Store quando l'app non è installata
setFallbackUrl Il collegamento da aprire quando l'app non è installata. Specifica questa opzione per fare qualcosa di diverso dall'installare la tua app dall'App Store quando l'app non è installata, ad esempio aprire la versione Web mobile del contenuto o visualizzare una pagina promozionale per la tua app.
setCustomScheme Lo schema URL personalizzato della tua app, se definito come qualcosa di diverso dall'ID bundle della tua app
setIpadFallbackUrl Il link per aprire su iPad quando l'app non è installata. Specifica questa opzione per fare qualcosa di diverso dall'installare la tua app dall'App Store quando l'app non è installata, ad esempio aprire la versione web del contenuto o visualizzare una pagina promozionale per la tua app.
setIpadBundleId L'ID bundle dell'app iOS da utilizzare su iPad per aprire il collegamento. L'app deve essere connessa al tuo progetto dalla pagina Panoramica della console Firebase.
setMinimumVersion Il numero di versione della versione minima dell'app che può aprire il collegamento. Questo flag viene passato alla tua app quando viene aperta e la tua app deve decidere cosa farne.
NavigationInfoParameters
setForcedRedirectEnabled Se impostato su "1", salta la pagina di anteprima dell'app quando viene aperto il collegamento dinamico e reindirizza invece all'app o allo store. La pagina di anteprima dell'app (abilitata per impostazione predefinita) può inviare in modo più affidabile gli utenti alla destinazione più appropriata quando aprono i collegamenti dinamici nelle app; tuttavia, se prevedi che un collegamento dinamico venga aperto solo in app che possono aprire collegamenti dinamici in modo affidabile senza questa pagina, puoi disabilitarlo con questo parametro. Questo parametro influenzerà il comportamento di Dynamic Link solo su iOS.
SocialMetaTagParameters
setTitolo Il titolo da utilizzare quando il collegamento dinamico è condiviso in un post social.
setDescrizione La descrizione da utilizzare quando il collegamento dinamico è condiviso in un post social.
setImageUrl L'URL di un'immagine correlata a questo collegamento. L'immagine deve essere di almeno 300 x 200 px e inferiore a 300 KB.
Parametri di GoogleAnalytics
setSource
setMedio
impostaCampagna
setTerm
setContenuto
Parametri di analisi di Google Play. Questi parametri ( utm_source , utm_medium , utm_campaign , utm_term , utm_content ) vengono trasmessi al Play Store e aggiunti al payload del collegamento.
ItunesConnectAnalyticsParameters
setProviderToken
setAffiliateToken
setCampaignToken
Parametri di analisi di iTunes Connect. Questi parametri ( pt , at , ct ) vengono passati all'App Store.

Per abbreviare un collegamento dinamico lungo, specificare l'URL del collegamento dinamico utilizzando setLongLink invece di impostare i parametri con gli altri metodi del builder:

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