Firebase Dynamic Links è un servizio di Google per creare link intelligenti che indirizzano l'utente nel posto giusto dell'app indipendentemente dal fatto che l'app sia installata o meno. Secondo la Documentazione Firebase, Dynamic Links reindirizzano automaticamente l'utente all'App Store o a Google Play se l'app non è installata e ripristinano il contesto di transizione dopo l'installazione. Gli Smart Links di Firebase risolvono il problema degli URL Scheme, che non funzionano con le app non installate.
Punti chiave
Firebase Dynamic Links è un servizio cloud di Google che crea link universali unificati per app mobili su iOS e Android. Un link dinamico contiene un deep link al contenuto all'interno dell'app ma si comporta come un normale link HTTPS: se l'app è installata, la apre direttamente; altrimenti, reindirizza all'app store.
A differenza degli URL Scheme normali, Dynamic Links possono funzionare con app non installate grazie alla tecnologia deferred deep link. Quando un utente installa l'app dopo aver cliccato sul link, Firebase salva i parametri di transizione e li trasmette al primo avvio. Questo apre possibilità per programmi di referral, campagne di marketing e inviti.
Gli URL Scheme richiedono che l'app sia installata e non hanno un meccanismo di fallback standard. Firebase Dynamic Links risolvono questo problema attraverso un servizio web intermedio di Firebase che determina lo stato di installazione dell'app sul dispositivo e instrada correttamente l'utente. Allo stesso tempo, un singolo link funziona in modo identico su entrambe le piattaforme.
Firebase Dynamic Link utilizza un dominio come yourcode.page.link, registrato in Firebase Console. Quando un utente clicca su tale link, Firebase determina il tipo di dispositivo e lo stato di installazione dell'app. Per iOS viene utilizzato il meccanismo Universal Links, per Android App Links con verifica automatica tramite Digital Asset Links.
Il processo di gestione include diverse fasi sequenziali: quando si clicca sul link, il browser invia una richiesta GET al server Firebase; il server determina la piattaforma e verifica la presenza dell'app sul dispositivo. Se l'app è installata, viene generato un reindirizzamento a un Universal Link o Intent con parametri per aprire la schermata di destinazione. Se l'app non è installata, reindirizza all'App Store o a Google Play per il download.
L'app riceve il link durante l'inizializzazione dell'SDK Firebase. Il metodo getDynamicLink() restituisce un PendingResult con i dati di transizione. Dopo il recupero riuscito, vengono estratti i parametri del deep link, i tag UTM per l'analisi e i dati arbitrari passati durante la creazione del link.
Firebase Console fornisce un'interfaccia visiva per creare Dynamic Links. Lo sviluppatore specifica l'URL del deep link, il nome della campagna, le impostazioni per iOS e Android separatamente, nonché i parametri di analisi. Dopo la creazione, Firebase genera un link breve come https://yourcode.page.link/abc123, utilizzabile in materiali pubblicitari, campagne email e social network.
Per la creazione programmatica di Dynamic Links, viene utilizzata l'API REST di Firebase o l'SDK client. L'API REST consente di generare link in massa per campagne di marketing con parametri personalizzati, inclusi link per social network e analisi asincrona dei clic. Quando si creano link tramite API, è importante specificare correttamente i parametri socialMetaTagInfo — determinano come il link appare quando viene condiviso in messaggistica e social network con una scheda di anteprima.
| Parametro | Scopo | Obbligatorio |
|---|---|---|
| Deep Link URL | Link interno al contenuto dell'app | Sì |
| iOS Bundle ID | Identificatore dell'app nell'App Store | Per iOS |
| Android Package Name | Nome del pacchetto in Google Play | Per Android |
| Fallback URL | Pagina web se l'app non è installata | No |
| Tag UTM | Parametri per Google Analytics | No |
Per lavorare con Firebase Dynamic Links su iOS, è necessario integrare l'SDK Firebase tramite CocoaPods o Swift Package Manager, configurare Info.plist con GOOGLE_APP_ID e registrare il dominio Dynamic Links negli Associated Domains del progetto. Successivamente, l'app gestisce automaticamente gli Universal Links generati da Firebase.
In Xcode, è necessario aggiungere la capacità Associated Domains con una voce come applinks:yourcode.page.link. L'SDK Firebase utilizza il metodo application(_:continue:restorationHandler:) per gestire gli Universal Links, quindi non è necessaria alcuna integrazione aggiuntiva con AppDelegate — Firebase estrae automaticamente i parametri del Dynamic Link da User Activity.
Esempio di configurazione Info.plist per l'inizializzazione corretta di Firebase e la registrazione del gestore Dynamic Links. La chiave FIROptions deve contenere l'identificatore del progetto da GoogleService-Info.plist.
<key>FirebaseDynamicLinksCustomDomains</key>
<array>
<string>https://yourcode.page.link</string>
</array>
<key>FirebaseAppDelegateProxyEnabled</key>
<false/>
Se il proxy AppDelegate è disabilitato, è necessario chiamare manualmente il metodo handleUniversalLink(_:) e passare User Activity dal continue NSUserActivity. L'SDK Firebase estrae automaticamente i parametri del link e restituisce un DynamicLink tramite il completion handler.
Su Android, l'integrazione di Firebase Dynamic Links inizia aggiungendo le dipendenze in build.gradle e il file google-services.json da Firebase Console. Il dominio Dynamic Links viene registrato in Firebase Console, dopo di che tutti i link con questo dominio vengono automaticamente riconosciuti dall'app Android tramite un Intent Filter con action VIEW. Per un corretto funzionamento, è necessario aggiungere anche il plugin Google Services nel build.gradle root e del modulo, ed eseguire la sincronizzazione Gradle.
Per gestire correttamente i link su Android, è necessario aggiungere un Intent Filter per il dominio Dynamic Links nell'Activity che deve ricevere i link in entrata. Il filtro deve includere lo schema https, l'host del tuo dominio Dynamic Links e il percorso predefinito.
Esempio di Intent Filter in AndroidManifest.xml per ricevere Dynamic Links sul dominio yourcode.page.link.
<activity android:name=".MainActivity"
android:launchMode="singleTask">
<intent-filter
android:autoVerify="true">
<action
android:name="android.intent.action.VIEW" />
<category
android:name="android.intent.category.DEFAULT" />
<category
android:name="android.intent.category.BROWSABLE" />
<data
android:scheme="https"
android:host="yourcode.page.link" />
</intent-filter>
</activity>
È importante impostare launchMode su singleTask per l'Activity che riceve Dynamic Links. Ciò impedisce la creazione di una nuova istanza dell'Activity al ripetersi del clic sul link e consente di gestire tutti i deep link in entrata in una singola istanza.
L'SDK Firebase per Android fornisce il metodo FirebaseDynamicLinks.getInstance().getDynamicLink(intent), che restituisce un oggetto PendingTask con i dati del link. Dall'oggetto DynamicLink vengono estratti l'URI profondo, i parametri UTM e il timestamp di transizione. Si consiglia di eseguire la gestione nei metodi onCreate() e onNewIntent() dell'Activity.
Durante la gestione, è importante considerare che un Dynamic Link può essere ricevuto sia all'avvio dell'app da uno stato freddo (cold start) sia durante la transizione da un'altra app a un'app già in esecuzione. Per il secondo caso, è necessario sovrascrivere onNewIntent() e richiamare nuovamente il controllo del Dynamic Link.
Esempio di ricezione e gestione di Firebase Dynamic Link in MainActivity. Il codice gestisce sia il cold start che la transizione da un'altra app.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
checkDynamicLink(intent)
}
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
checkDynamicLink(intent)
}
private fun checkDynamicLink(intent: Intent) {
FirebaseDynamicLinks.getInstance()
.getDynamicLink(intent)
.addOnSuccessListener link ->
val deepLink = link?.link.toString()
handleDeepLink(deepLink)
}
}
}
Il metodo addOnSuccessListener restituisce un DynamicLink, dal quale viene estratto il link di destinazione tramite link?.link. Se il listener restituisce null, significa che l'Intent non contiene un Dynamic Link — si tratta di un avvio normale dell'app senza un link in entrata. Sono disponibili anche i tag UTM per l'analisi dei clic, tra cui campaign, medium, source e content, che possono essere passati a Google Analytics per una valutazione dettagliata dell'efficacia di ogni canale di marketing.
Domande frequenti
Firebase Dynamic Links supporta il deferred deep link — il link preserva il contesto anche se l'app non è installata. Dopo l'installazione, l'app riceve tutti i parametri di transizione, cosa impossibile con i normali URL Scheme o Universal Links.
Firebase Dynamic Links sono inclusi nel piano gratuito Firebase Spark. Non ci sono limiti sul numero di link creabili. Tuttavia, dal 2024 Google ha annunciato la transizione a una nuova infrastruttura, quindi i termini potrebbero cambiare.
Dynamic Links sono progettati per applicazioni mobili. Cliccando sul link da un browser web desktop, si aprirà l'URL di fallback. Per le applicazioni web, usa link normali o la tua logica di reindirizzamento.
Firebase Console fornisce un pulsante Test Dynamic Link per visualizzare in anteprima il comportamento. Puoi anche usare l'emulatore Android o il simulatore iOS con l'SDK Firebase installato per testare localmente tutti gli scenari di transizione.
Un link breve Firebase Dynamic Link è composto dal dominio page.link e da un suffisso casuale di circa 7 caratteri. La lunghezza totale è di circa 30 caratteri. Il deep link interno può essere di qualsiasi lunghezza, ma si consiglia di limitarlo a 2 KB per compatibilità.
Riepilogo
Svilupperemo un'applicazione mobile chiavi in mano
IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.
Leggi anche