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 collegamenti dinamici, hai già completato questi passaggi e puoi saltare questa sezione.

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

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

  2. Utilizzando la Firebase Android BoM , dichiarare la dipendenza per la libreria dinamica Link Android nel modulo (a livello di app) File Gradle (di solito app/build.gradle ).

    Per un'esperienza ottimale con Dynamic Link, si consiglia consentendo di Google Analytics nel progetto Firebase e aggiungendo il Firebase SDK per Google Analytics per la vostra applicazione.

    Giava

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

    Usando il Firebase Android BoM , la vostra applicazione sarà sempre utilizzare versioni compatibili delle librerie Firebase Android.

    (Alternativa) Dichiarare Firebase dipendenze delle librerie senza utilizzare la distinta

    Se scegli di non utilizzare Firebase BoM, devi specificare ogni versione della libreria Firebase nella relativa riga di dipendenza.

    Si noti che se si utilizzano più librerie Firebase nella vostra app, ti consigliamo di utilizzare la distinta di gestire versioni della libreria, che assicura che tutte le versioni sono compatibili.

    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:20.1.1'
        implementation 'com.google.firebase:firebase-analytics:19.0.0'
    }
    

    Kotlin+KTX

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

    Usando il Firebase Android BoM , la vostra applicazione sarà sempre utilizzare versioni compatibili delle librerie Firebase Android.

    (Alternativa) Dichiarare Firebase dipendenze delle librerie senza utilizzare la distinta

    Se scegli di non utilizzare Firebase BoM, devi specificare ogni versione della libreria Firebase nella relativa riga di dipendenza.

    Si noti che se si utilizzano più librerie Firebase nella vostra app, ti consigliamo di utilizzare la distinta di gestire versioni della libreria, che assicura che tutte le versioni sono compatibili.

    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:20.1.1'
        implementation 'com.google.firebase:firebase-analytics-ktx:19.0.0'
    }
    
  3. Nella console Firebase, aprire la sezione dinamica Links.
  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 Dynamic Links quando si creano collegamenti dinamici a livello di codice.

  5. Consigliato: specificare i pattern URL consentite nei tuoi link profondi e collegamenti di ripiego. In questo modo, impedisci a soggetti non autorizzati di creare collegamenti dinamici che reindirizzano dal tuo dominio a siti che non controlli. Vedere Consentire modelli specifici URL .

Usa la console Firebase

Se si desidera generare un unico collegamento dinamico, sia per scopi di test, o per il vostro team di marketing di creare facilmente un link che può essere utilizzato in qualcosa di simile a un post di social media, il modo più semplice sarebbe quella di visitare la console Firebase e creare uno manualmente seguendo il modulo passo passo.

Per creare un collegamento dinamico, creare un nuovo DynamicLink oggetto con il suo costruttore, specificando i parametri di collegamento dinamico con i metodi Builder. Poi, chiamare buildDynamicLink o buildShortDynamicLink .

Il seguente esempio minimale crea una lunga Dynamic Link per https://www.example.com/ che si apre con la tua applicazione Android su Android e le app com.example.ios su iOS:

Giava

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 breve Dynamic Link, costruire un DynamicLink allo stesso modo, e quindi chiamare buildShortDynamicLink . Costruire un breve collegamento richiede una chiamata di rete, così invece di tornare direttamente il link, buildShortDynamicLink restituisce un Task , che rende il collegamento breve disponibile quando la Completa di richiesta. Per esempio:

Giava

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 vostro caso d'uso, non c'è nulla di male nel qualcuno indovinare con successo un link breve, si potrebbe preferire di generare suffissi che sono solo il tempo necessario per essere unico, che si può fare passando ShortDynamicLink.Suffix.SHORT al buildShortDynamicLink metodo :

Giava

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:

Giava

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 collegamento verrà aperto dalla tua app. Specifica un URL che la tua app può gestire, in genere il contenuto o il payload dell'app, che avvia la logica specifica dell'app (come l'accredito all'utente di un coupon o la visualizzazione di una schermata di benvenuto). Questo collegamento deve essere un URL ben formattato, essere adeguatamente codificato come 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 Dynamic Link sguardi dominio come i 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 eseguire operazioni diverse dall'installazione dell'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.
setVersione minima La versionCode della versione minima della vostra applicazione in grado di 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 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. Specificalo per fare qualcosa di diverso dall'installazione dell'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 da aprire su iPad quando l'app non è installata. Specificalo per fare qualcosa di diverso dall'installazione dell'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 collegata al tuo progetto dalla pagina Panoramica della console Firebase.
setVersione minima Il numero di versione della versione minima della vostra applicazione in grado di aprire il link. 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 del Dynamic Link solo su iOS.
SocialMetaTagParameters
setTitolo Il titolo da utilizzare quando il Dynamic Link viene condiviso in un post social.
setDescrizione La descrizione da utilizzare quando il Dynamic Link è condiviso in un post social.
setImageUrl L'URL di un'immagine correlata a questo collegamento. L'immagine deve essere almeno 300x200 px e inferiore a 300 KB.
Parametri di GoogleAnalytics
setSource
setMedium
setCampagna
setTerm
setContent
Parametri di analisi di Google Play. Questi parametri ( utm_source , utm_medium , utm_campaign , utm_term , utm_content ) sono passati al Play Store, così come aggiunto al payload collegamento.
ItunesConnectAnalyticsParameters
setProviderToken
setAffiliateToken
setCampaignToken
Parametri di analisi di iTunes Connect. Questi parametri ( pt , at , ct ) sono passati per l'App Store.

Per abbreviare una lunga Dynamic Link, specificare l'URL del link dinamico utilizzando setLongLink invece di impostare i parametri con gli altri metodi costruttore:

Giava

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