Crea link dinamici in un'app Flutter

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

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

Prima di poter creare Dynamic Links nella tua app per 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. Installa e inizializza gli SDK Firebase per Flutter, se non l'hai già fatto.

  2. Dalla directory principale del progetto Flutter, esegui il seguente comando per installare il plug-in Dynamic Links:

    flutter pub add firebase_dynamic_links
    
  3. Se stai creando un'app per Android, apri la pagina Impostazioni progetto della console Firebase e assicurati di aver specificato la chiave di firma SHA-1. Se utilizzi i link dell'app, specifica anche la chiave SHA-256.

  4. Nella console Firebase, apri la sezione Link dinamici.

    1. Se non hai ancora configurato un dominio per i link dinamici, fai clic sul pulsante Inizia e segui le istruzioni.

      Se hai già un dominio di link dinamici, prendine nota. Devi fornire un dominio di link dinamici quando crei link dinamici a livello di programmazione.

    2. Consigliato: dal menu "Altro" (⋮), specifica i pattern URL consentiti nei link diretti e nei link di fallback. In questo modo, impedisci a terze parti non autorizzate di creare link dinamici che reindirizzano dal tuo dominio a siti che non controlli.

      Consulta la sezione Consenti pattern URL specifici.

Per creare un link dinamico, crea un nuovo oggetto DynamicLinkParameters e passalo a buildLink() o buildShortLink().

Il seguente esempio minimo crea un link dinamico lungo a https://www.example.com/ che si apre con com.example.app.android su Android e l'app com.example.app.ios su iOS:

final dynamicLinkParams = DynamicLinkParameters(
  link: Uri.parse("https://www.example.com/"),
  uriPrefix: "https://example.page.link",
  androidParameters: const AndroidParameters(packageName: "com.example.app.android"),
  iosParameters: const IOSParameters(bundleId: "com.example.app.ios"),
);
final dynamicLink =
    await FirebaseDynamicLinks.instance.buildLink(dynamicLinkParams);

Per creare un link dinamico breve, passa l'oggetto DynamicLinkParameters a buildShortLink(). La creazione del link breve richiede una chiamata di rete. Ad esempio:

final dynamicLinkParams = DynamicLinkParameters(
  link: Uri.parse("https://www.example.com/"),
  uriPrefix: "https://example.page.link",
  androidParameters: const AndroidParameters(packageName: "com.example.app.android"),
  iosParameters: const IOSParameters(bundleId: "com.example.app.ios"),
);
final dynamicLink =
    await FirebaseDynamicLinks.instance.buildShortLink(dynamicLinkParams);

Per impostazione predefinita, i link dinamici brevi vengono generati con suffissi di pochi caratteri. Sebbene ciò renda i link più compatti, introduce anche la possibilità che qualcuno possa indovinare un link breve valido. Spesso, non ci sono problemi se qualcuno lo fa, perché il link rimanda a informazioni pubbliche.

Tuttavia, se i link brevi rimandano a informazioni specifiche dell'utente, devi creare link più lunghi con suffissi di 17 caratteri che rendano molto improbabile che qualcuno possa indovinare un link dinamico valido. Per farlo, passa ShortDynamicLinkType.unguessable al metodo buildShortLink():

final unguessableDynamicLink = await FirebaseDynamicLinks.instance.buildShortLink(
    dynamicLinkParams,
    shortLinkType: ShortDynamicLinkType.unguessable,
);

Puoi utilizzare l'API Generatore di link dinamici per creare Dynamic Links con uno qualsiasi dei parametri supportati. Consulta il riferimento API.

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

final dynamicLinkParams = DynamicLinkParameters(
  link: Uri.parse("https://www.example.com/"),
  uriPrefix: "https://example.page.link",
  androidParameters: const AndroidParameters(
    packageName: "com.example.app.android",
    minimumVersion: 30,
  ),
  iosParameters: const IOSParameters(
    bundleId: "com.example.app.ios",
    appStoreId: "123456789",
    minimumVersion: "1.0.1",
  ),
  googleAnalyticsParameters: const GoogleAnalyticsParameters(
    source: "twitter",
    medium: "social",
    campaign: "example-promo",
  ),
  socialMetaTagParameters: SocialMetaTagParameters(
    title: "Example of a Dynamic Link",
    imageUrl: Uri.parse("https://example.com/image.png"),
  ),
);
final dynamicLink =
    await FirebaseDynamicLinks.instance.buildShortLink(dynamicLinkParams);

Puoi impostare i parametri dei link dinamici con i seguenti metodi:

Parametri dei link dinamici
setLink Il link che aprirà la tua app. Specifica un URL che la tua app può gestire, in genere i contenuti o il payload dell'app, che avvia una logica specifica dell'app (ad esempio, l'assegnazione di un coupon all'utente o la visualizzazione di una schermata di benvenuto). Questo link deve essere un URL ben formattato, codificato correttamente URL, utilizzare HTTP o HTTPS e non può essere un altro link dinamico Link.
setDomainUriPrefix Il prefisso dell'URL del link dinamico, che puoi trovare nella console Firebase. Un dominio di link dinamici è simile ai seguenti esempi:
https://example.com/link
https://example.page.link
AndroidParameters
setFallbackUrl Il link da aprire quando l'app non è installata. Specifica questa opzione per eseguire un'azione diversa dall'installazione dell'app dal Play Store quando l'app non è installata, ad esempio aprire la versione web mobile dei contenuti o visualizzare una pagina promozionale per la tua app.
setMinimumVersion Il versionCode della versione minima dell'app che può aprire il link. Se l'app installata è una versione precedente, l'utente viene indirizzato al Play Store per eseguire l'upgrade dell'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 link da aprire quando l'app non è installata. Specifica questa opzione per eseguire un'azione diversa dall'installazione dell'app dall'App Store quando l'app non è installata, ad esempio aprire la versione web mobile dei contenuti o visualizzare una pagina promozionale per la tua app.
setCustomScheme Lo schema URL personalizzato della tua app, se definito in modo diverso da l'ID pacchetto dell'app
setIpadFallbackUrl Il link da aprire su iPad quando l'app non è installata. Specifica questa opzione per eseguire un'azione diversa dall'installazione dell'app dall'App Store quando l' app non è installata, ad esempio aprire la versione web dei contenuti o visualizzare una pagina promozionale per la tua app.
setIpadBundleId L'ID pacchetto dell'app per iOS da utilizzare su iPad per aprire il link. L'app deve essere collegata al tuo progetto dalla pagina Panoramica della console Firebase.
setMinimumVersion Il numero di versione della versione minima dell'app che può aprire il link. Questo flag viene passato alla tua app quando viene aperta e l'app deve decidere cosa farne.
NavigationInfoParameters
setForcedRedirectEnabled Se impostato su '1', salta la pagina di anteprima dell'app quando viene aperto il link dinamico e reindirizza invece all'app o allo store. La pagina di anteprima dell'app (attivata per impostazione predefinita) può inviare in modo più affidabile gli utenti alla destinazione più appropriata quando aprono i link dinamici nelle app; tuttavia, se prevedi che un link dinamico venga aperto solo in app che possono aprire i link dinamici in modo affidabile senza questa pagina, puoi disattivarla con questo parametro. Questo parametro influirà sul comportamento del link dinamico solo su iOS.
SocialMetaTagParameters
setTitle Il titolo da utilizzare quando il link dinamico viene condiviso in un post sui social media.
setDescription La descrizione da utilizzare quando il link dinamico viene condiviso in un post sui social media.
setImageUrl L'URL di un'immagine correlata a questo link. L'immagine deve avere dimensioni di almeno 300 x 200 px e non superare i 300 KB.
GoogleAnalyticsParameters
setSource
setMedium
setCampaign
setTerm
setContent
Parametri di analisi di Google Play. Questi parametri (`utm_source`, `utm_medium`, `utm_campaign`, `utm_term`, `utm_content`) vengono passati al Play Store e aggiunti al payload del link.
ItunesConnectAnalyticsParameters
setProviderToken
setAffiliateToken
setCampaignToken
Parametri di analisi di iTunes Connect. Questi parametri (`pt`, `at`, `ct`) vengono passati all'App Store.