Deep Link: cosa sono, tipi di link e principio di funzionamento

Autore: IT Sectr Pubblicato: 2026-05-14 Tempo di lettura: 9 min

Un Deep Link (link profondo) è un URL che indirizza l'utente a uno schermo o contenuto specifico all'interno di un'applicazione mobile, bypassando la schermata principale. A differenza di un normale link a un sito web, un deep link attiva l'app e apre immediatamente il contenuto target. Secondo Android Developers, i deep link configurati correttamente aumentano la conversione nell'azione target del 30–50% riducendo il numero di passaggi per raggiungere il contenuto.

Punti chiave

  • Deep Link — un URL che apre uno schermo specifico dell'app, non la pagina principale
  • Schema URI (myapp://profile/123) — il metodo classico di deep link, funziona su entrambe le piattaforme
  • Deferred Deep Link — un link che si attiva dopo l'installazione dell'app, trasmettendo il contesto
  • Universal Link (iOS) e App Link (Android) — evoluzione dei deep link con verifica del dominio
  • Deep Link contestuale — trasmette parametri aggiuntivi: codice promozionale, referrer, fonte di traffico

Un Deep Link (link profondo) è un URI che, quando viene cliccato, non apre una pagina web ma uno schermo specifico all'interno di un'applicazione mobile. La tecnologia risolve un problema fondamentale delle piattaforme mobili: il browser non può aprire direttamente uno schermo dell'app, e un deep link crea un ponte tra il web e il codice nativo. Senza un deep link, l'utente arriva sempre alla schermata principale ed è costretto a navigare manualmente fino al contenuto desiderato.

L'architettura di un deep link è composta da due parti: lo schema (scheme) determina quale app deve elaborare il link, e il percorso (path) punta a una risorsa specifica all'interno dell'app — un prodotto, un articolo, un profilo utente o una sezione delle impostazioni. I parametri di query (?source=push&campaign=summer) trasmettono contesto aggiuntivo per analisi, personalizzazione e attribuzione delle campagne.

È importante distinguere tra un deep link e un link normale. Un link normale (https://example.com/product/42) si apre nel browser e porta alla versione web di una pagina. Un deep link (myapp://product/42), se l'app è installata, apre lo schermo nativo con lo stesso contenuto, ma se l'app non è installata, mostra un errore. Universal Link (iOS) e App Link (Android) sono stati creati proprio per risolvere il problema del fallback senza soluzione di continuità.

Compiti diversi richiedono tipi diversi di deep link. Alcuni link funzionano solo con l'app installata, altri possono attendere l'installazione, e altri ancora trasmettono contesto analitico. La scelta del tipo dipende dal caso d'uso: campagna pubblicitaria, notifica push, condivisione di contenuti o newsletter via email.

Deep Link standard (Standard Deep Link)

Un Standard Deep Link è il tipo base che si attiva solo se l'app è già installata sul dispositivo. L'utente clicca su un link myapp://product/42, il sistema rileva lo schema registrato e apre l'app sullo schermo desiderato. Se l'app non è installata, il browser mostra un errore “Pagina non trovata” o semplicemente non fa nulla. Questo tipo è adatto per la navigazione interna all'interno di un'app già installata.

Configurare un deep link standard è semplice: basta registrare lo schema URI nel manifest (Android) o Info.plist (iOS). Non è richiesta alcuna validazione del server o certificati SSL. Tuttavia, proprio a causa della mancanza di fallback, questo tipo è considerato obsoleto per le campagne di marketing — la perdita di traffico dagli utenti senza l'app può raggiungere il 60%.

Deferred Deep Link (link profondo differito)

Un Deferred Deep Link risolve il problema principale dei deep link normali: funziona anche se l'app non è installata. L'utente clicca su un link → vede una pagina (pagina di atterraggio o App Store/Google Play) → installa l'app → al primo avvio, l'app riceve il contesto del link originale e apre lo schermo desiderato. La tecnologia richiede un SDK intermediario (AppsFlyer, Branch, Adjust) che memorizza il contesto sul server fino al primo avvio.

Branch è una delle piattaforme più popolari per i deferred deep link. Fornisce un unico link che funziona su tutte le piattaforme: rileva il sistema operativo dell'utente, reindirizza all'app store e, dopo l'installazione, trasmette il contesto (codice promozionale, ID prodotto, fonte della campagna). Secondo Branch (2024), i deferred deep link aumentano la conversione delle campagne pubblicitarie del 40–70%.

Contextual Deep Link (link profondo contestuale)

Un Contextual Deep Link è un deep link normale o differito integrato con parametri di contesto: fonte di traffico, campagna, codice promozionale, referrer, ID partner. I parametri vengono trasmessi nell'URL e elaborati dall'app per la personalizzazione: mostrare un bonus di benvenuto, aprire un prodotto con sconto, registrare analisi di installazione.

I tag UTM (utm_source, utm_medium, utm_campaign) sono un modo standard per trasmettere il contesto. Nel mobile, i deep link contestuali sono fondamentali per l'attribuzione: senza di essi, il proprietario dell'app non sa quale canale ha portato l'utente — traffico organico, annunci Facebook, newsletter via email o codice QR. Un'attribuzione di qualità richiede l'integrazione con un MMP (Mobile Measurement Partner).

Tipo di Deep LinkRichiede installazioneAttendere installazioneContesto
StandardNoSolo in URL
DifferitoNoArchiviazione server
ContestualeQualsiasiQualsiasiUTM + parametri

iOS supporta i deep link attraverso due meccanismi: il vecchio Custom URL Scheme e il moderno Universal Link (iOS 9+). Custom URL Scheme funziona registrando uno schema personalizzato in Info.plist. L'app registra myapp:// e iOS apre l'app quando si clicca su tale link. Il problema: se lo schema non è registrato da nessuna app, il browser mostra un errore.

La gestione dei deep link su iOS avviene tramite il metodo AppDelegate application(_:open:options:) o SceneDelegate scene(_:openURLContexts:). Lo sviluppatore estrae l'URL, analizza il percorso e i parametri, quindi naviga verso lo schermo appropriato. Se si utilizza SwiftUI, la gestione avviene tramite OpenURLAction o onChange(of: openURL). È importante gestire correttamente lo stato dell'app: l'app può essere non avviata, in background o attiva.

La sicurezza su iOS è rigorosa: qualsiasi app può intercettare un Custom URL Scheme registrando lo stesso schema. Questa è una potenziale vulnerabilità (dirottamento dello schema URL). Pertanto, Apple raccomanda Universal Link come alternativa più sicura: solo il proprietario verificato del dominio può associare link all'app. Ulteriori informazioni su Universal Link nell'articolo Universal Link.

Android implementa i deep link tramite Intent Filter in AndroidManifest.xml. L'app definisce un'Activity che gestisce uno schema specifico (myapp://) o host e percorsi specifici. Quando l'utente clicca su un deep link, Android cerca un'Activity con un Intent Filter corrispondente e la apre. Se ci sono più Activity corrispondenti, il sistema mostra un dialogo di selezione dell'app.

xml
// AndroidManifest.xml - Intent Filter per Deep Link
<activity
    android:name=".ui.ProductActivity"
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data
            android:scheme="myapp"
            android:host="product"
            android:pathPrefix="/" />
    </intent-filter>
</activity>

La gestione dei deep link su Android viene eseguita nel metodo Activity.onCreate() o onNewIntent(). Lo sviluppatore riceve l'Intent, estrae l'URI ed esegue la navigazione. Per Jetpack Navigation, il componente Navigation Deep Link consente di descrivere dichiarativamente i deep link nel grafico di navigazione. Android App Link (Android 6.0+) è un'evoluzione dei deep link con verifica tramite Digital Asset Links, eliminando il dialogo di selezione dell'app.

È importante considerare le modifiche di Android 12+: a partire dall'API 31, il sistema richiede la dichiarazione esplicita di exported=true per le Activity che gestiscono i deep link e verifica la correttezza dell'Intent Filter. Google Play Store verifica la convalida dell'App Link durante la pubblicazione. Senza verifica, Google potrebbe rifiutare l'aggiornamento se i deep link portano a pagine inesistenti del sito web.

La configurazione dei deep link include diverse fasi comuni a entrambe le piattaforme. Il primo passo è definire lo schema e la struttura dell'URL. Si consiglia di utilizzare lo schema https (invece di uno personalizzato) per la compatibilità con Universal Link e App Link. La struttura dell'URL dovrebbe rispecchiare la struttura del sito web: /product/42, /profile/john, /settings/notifications. Ciò semplifica la manutenzione e l'indicizzazione dei contenuti da parte dei motori di ricerca.

La seconda fase è la gestione dei deep link nel codice dell'app. Per Android, si consiglia Jetpack Navigation con deep link dichiarativi in nav_graph. Per iOS — SwiftUI NavigationStack con gestione OpenURLAction. È importante gestire tre stati dell'app: avvio a freddo (app non avviata), avvio a caldo (in background) e attivo (a schermo). Ogni stato richiede una logica di navigazione diversa.

  • Definire lo schema e la struttura dell'URL (myapp:// o https://your.domain/)
  • Registrare lo schema nel manifest (Android) o Info.plist (iOS)
  • Implementare la gestione in Activity o AppDelegate/SwiftUI
  • Configurare il fallback per il caso in cui l'app non sia installata
  • Testare tutti e tre gli stati: avvio a freddo, avvio a caldo, attivo

Il test dei deep link è un compito separato. Android Studio fornisce lo strumento App Links Assistant per verificare gli Intent Filter. Su iOS, il test viene eseguito tramite Xcode passando un URL tramite argomenti dello schema di avvio. Si consiglia di impostare un controllo CI: navigazione automatica tramite deep link e verifica che si sia aperto lo schermo previsto. Per i deferred deep link, il test include il ciclo completo di “installazione → primo avvio → contesto”. Senza test, i deep link spesso si rompono quando viene aggiornata la navigazione nell'app.

Domande frequenti

In cosa un deep link differisce da un link normale?

Un link normale (https://site.com/page) si apre nel browser. Un deep link (myapp://page o https://site.com/page con verifica) apre uno schermo all'interno di un'app mobile. Un deep link può anche trasmettere contesto: codice promozionale, fonte di traffico, ID referrer.

Cos'è uno schema URI e a cosa serve?

Uno schema URI è un prefisso URL che determina quale app deve elaborare il link (esempio: myapp://, vk://, tg://). Il sistema utilizza lo schema per il routing: trova l'app che ha registrato questo schema e le passa l'URL per l'elaborazione.

Come funziona un deferred deep link?

L'utente clicca su un link → il servizio (Branch, AppsFlyer) memorizza il contesto → reindirizza all'App Store/Google Play → dopo l'installazione e il primo avvio, l'SDK passa il contesto salvato all'app → l'app apre lo schermo desiderato, come se l'utente avesse già l'app installata.

Si può usare un deep link senza avere l'app installata?

Un deep link normale — no. Un deferred deep link — sì, tramite una pagina intermedia che reindirizza all'app store e salva il contesto. Universal Link e App Link aprono il sito web come fallback se l'app non è installata.

Come testare i deep link su dispositivi reali?

Su Android, usa adb: adb shell am start -W -a android.intent.action.VIEW -d “myapp://product/42”. Su iOS — xcrun simctl openurl booted “myapp://product/42”. Le console di test di Firebase Dynamic Links e Branch sono disponibili per entrambe le piattaforme.

Riepilogo

  • Deep Link — un URL che apre uno schermo specifico dell'app, non la pagina principale o il sito web
  • Tre tipi — Standard (solo con app installata), Differito (con attesa installazione), Contestuale (con parametri UTM)
  • Custom URL Scheme (myapp://) — metodo semplice, ma senza fallback in assenza di app
  • Universal Link e App Link — evoluzione dei deep link con verifica del dominio e fallback nel browser
  • iOS gestisce i deep link tramite AppDelegate/SceneDelegate, Android — tramite Intent Filter
  • Deferred Deep Link richiede un SDK intermediario (Branch, AppsFlyer) per memorizzare il contesto prima dell'installazione
  • Testare tutti e tre gli stati (freddo, caldo, attivo) è una fase obbligatoria nella configurazione dei deep link

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.

Discuti il progetto

Leggi anche