Deep linking iOS: setup

Deep linking iOS: setup

I deep link permettono di aprire una schermata specifica della tua app da un'URL. Su iOS le Universal Links sono il meccanismo ufficiale: l'utente clicca un link https e l'app si apre direttamente. Configurarle bene migliora retention, marketing e supporto.

Universal Links vs URL Schemes

Le Universal Links usano URL https associati al dominio della tua app; se l'app e installata si apre, altrimenti si apre il sito. Gli URL schemes (es. myapp://) sono il vecchio sistema: meno sicuri, non aprono Safari come fallback, ma utili in alcuni scenari (es. universal links non disponibili).

File apple-app-site-association

E un JSON pubblicato su https://tuosito.it/.well-known/apple-app-site-association. Contiene appID (Team ID + bundle id) e i path che vuoi gestire. Apple lo scarica al momento dell'install (e periodicamente) e configura il sistema per intercettare i link.

AASA in dettaglio

Il file deve essere servito con Content-Type application/json (senza estensione). HTTPS obbligatorio. Niente redirect. Apple lo cache aggressivamente: in caso di update, attendi fino a 24 ore o forza con device restart. Per app multiple sullo stesso dominio, usa array di appID nel JSON.

Universal Links e SwiftUI

In SwiftUI, gestisci Universal Links con onOpenURL nel App o nella View principale. Estrai path components e parametri da URLComponents. Routing tipico: NavigationStack con destination switch su tipo di link. Mantieni la logica di routing in un Coordinator separato dalla UI per testabilita.

Debug Universal Links

Console.app filtrando per "swcd" (swc daemon) mostra l'attività di verifica AASA. Apple App Search Validation Tool online verifica il file. Su device, Settings -> Developer -> Universal Links Diagnostic permette di vedere quali link sono associati. Strumenti indispensabili per il debugging.

Deferred Universal Links

Quando l'utente clicca un link senza app installata, atterrara sul sito. Per "ricordare" il link e aprire la schermata corretta dopo install, usa servizi come Branch.io o AppsFlyer OneLink. Il flusso: install via store -> fingerprinting -> apertura app con context originale.

Custom URL Scheme come fallback

Anche con Universal Links, mantieni URL scheme custom (es. myapp://) come backup per scenari edge: link condivisi via app non-browser, integrazione con OAuth callback, deep link interni. Registra in Info.plist con CFBundleURLTypes. Gestisci con onOpenURL in SwiftUI o application(_:open:options:) in AppDelegate.

Sharing iOS native

Per condividere link dall'app, usa UIActivityViewController. Configura activityItems con URL e testo. iOS gestisce automaticamente l'apertura nelle app destinatarie. Per UX migliore, fornisci immagini preview tramite LPLinkMetadata. Le Universal Links condivisi tramite native sharing si aprono direttamente nell'app destinataria.

Procedura passo-passo

  1. Crea il file apple-app-site-association con le associazioni desiderate.
  2. Pubblicalo sul tuo dominio principale via HTTPS (no redirect).
  3. Aggiungi la capability Associated Domains in Xcode.
  4. Inserisci applinks:tuosito.it nelle entitlements.
  5. Gestisci NSUserActivity in scene/AppDelegate per ricevere il link.
  6. Effettua il routing alla schermata corretta dell'app.
  7. Testa con un link reale: l'app deve aprirsi senza passare da Safari.

App Clip e Universal Links

App Clip e una versione "lite" della tua app (max 15 MB) lanciata via QR code, NFC tag, o Universal Link. Si configura nell'Xcode come target separato con bundle id specifico. Permette esperienze on-demand (es. pagamento parcheggio, ordinazione tavolo) senza richiedere install completo. Da iOS 14+, e una via potente per acquisition.

Errori comuni e come risolverli

  • AASA non accessibile: verifica con curl che restituisca JSON valido senza redirect.
  • Associated Domains mancante: senza capability nessun link funziona.
  • App non installata: il fallback e il sito web; assicurati che funzioni.
  • Cache CDN: pulisci la cache dopo modifiche al file AASA.
  • Test su simulatore: Universal Links non funzionano sul simulatore, usa dispositivo.

Domande frequenti

D: Universal Links funzionano con tutti i browser?
R: Funzionano in Safari, Mail e in app che usano SFSafariViewController. Alcune app esterne (Chrome) le aprono direttamente in browser.

D: Posso usare lo stesso link per iOS e Android?
R: Si, combina AASA con assetlinks.json per Android.

D: Devo registrare il dominio in console developer?
R: Solo gli Associated Domains in Xcode; il portale e automatico.

D: Universal Links funzionano in app webview?
R: Solo in SFSafariViewController e in alcune custom webview. Non in WKWebView standard.

Best practice operative

Documenta tutti gli Universal Link supportati. Crea matrix URL-screen-parametri come riferimento per team. Test ogni link dopo modifiche al AASA. Monitora deep_link_opened event per individuare problemi. Coordina con marketing per garantire link delle campagne funzionino correttamente prima del lancio.

Universal Links + App Clips e combinazione potente: l'utente clicca un link, se app non installata si apre App Clip (max 15 MB) per task immediato, opzionalmente invitato a installare app completa. Strategia per ridurre friction di acquisition. Apple promuove questa pratica per scenari on-demand come parcheggio, ordinazione tavolo, ticketing.

iOS 17+ introduce miglioramenti su deferred Universal Links e support browser più ampio. Test sempre su versioni iOS recenti perché behavior cambia. Mantieni AASA aggiornato anche dopo deployment iniziale.

Hai bisogno di aiuto?

Se vuoi sviluppare la tua app con G Tech Group, scrivici tramite il modulo di contatto.

Hai trovato utile quest'articolo?