Crea collegamenti dinamici in un'app Flutter

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. Installa e inizializza gli SDK Firebase per Flutter se non lo hai già fatto.

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

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

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

    1. Se non hai già configurato un dominio per i tuoi collegamenti dinamici, fai clic sul pulsante Inizia e segui le istruzioni.

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

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

      Consulta Consentire modelli URL specifici .

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

Il seguente esempio minimo crea un lungo collegamento dinamico 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 breve collegamento dinamico, passare l'oggetto DynamicLinkParameters a buildShortLink() . La creazione del collegamento breve richiede una chiamata di rete. Per 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 collegamenti dinamici brevi vengono generati con suffissi lunghi solo pochi caratteri. Sebbene ciò renda i collegamenti più compatti, introduce anche la possibilità che qualcuno possa indovinare un collegamento breve valido. Spesso non c'è nulla di male se qualcuno lo fa, perché il collegamento porta a informazioni pubbliche.

Tuttavia, se i tuoi collegamenti brevi portano a informazioni specifiche dell'utente, dovresti creare collegamenti più lunghi con suffissi di 17 caratteri che rendano molto improbabile che qualcuno possa indovinare un collegamento dinamico valido. Per fare ciò, passa ShortDynamicLinkType.unguessable al metodo buildShortLink() :

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

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

L'esempio seguente crea un collegamento 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);

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

Parametri DynamicLink
setLink Il collegamento che verrà aperto dall'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 (ad esempio accreditare all'utente un coupon o visualizzare una schermata di benvenuto). Questo collegamento deve essere un URL ben formattato, essere codificato correttamente nell'URL, utilizzare HTTP o HTTPS e non può essere un altro collegamento dinamico.
setDomainUriPrefix Il prefisso dell'URL del collegamento dinamico, 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 eseguire operazioni diverse 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 della tua app che può aprire il collegamento. Se l'app installata è una versione precedente, l'utente viene indirizzato al Play Store per aggiornare l'app.
Parametri Ios
setAppStoreId L'ID App Store della tua app, utilizzato per indirizzare gli utenti all'App Store quando l'app non è installata
setFallbackUrl Il collegamento da aprire quando l'app non è installata. Specifica questa opzione per eseguire operazioni diverse 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 come qualcosa di diverso dall'ID bundle della tua app
setIpadFallbackUrl Il collegamento da aprire sugli 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 sugli iPad per aprire il collegamento. L'app deve essere connessa al tuo progetto dalla pagina Panoramica della console Firebase.
setMinimumVersion Il numero di versione minima della tua app che può aprire il collegamento. Questo flag viene passato alla tua app quando viene aperta e l'app deve decidere cosa farne.
NavigationInfoParametri
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 nelle app che possono aprire i collegamenti dinamici in modo affidabile senza questa pagina, puoi disabilitarlo con questo parametro. Questo parametro influenzerà il comportamento del Dynamic Link solo su iOS.
Parametri SocialMetaTag
setTitolo Il titolo da utilizzare quando il collegamento dinamico viene condiviso in un post social.
setDescrizione La descrizione da utilizzare quando il collegamento dinamico viene condiviso in un post social.
setImageUrl L'URL di un'immagine correlata a questo collegamento. L'immagine deve essere di almeno 300x200 px e inferiore a 300 KB.
Parametri di GoogleAnalytics
setSource
setMedio
setCampaign
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.
Parametri iTunesConnectAnalytics
setProviderToken
setAffiliateToken
setCampaignToken
Parametri di analisi di iTunes Connect. Questi parametri (`pt`, `at`, `ct`) vengono passati all'App Store.