Il collegamento profondo è una tecnica potente che permette alle applicazioni mobili di aprire direttamente a contenuti specifici o pagine all'interno dell'app. Su dispositivi iOS, questo viene raggiunto attraverso l'uso di schemi URL, che sono URL personalizzati che attivano azioni specifiche in un'app. Quando combinato con un CMS senza testa come Directus, è possibile gestire dinamicamente il contenuto che questi link profondi puntano a, consentendo un'esperienza mobile scalabile, basata sui contenuti.

Che cosa è il programma URL iOS?

Lo schema URL iOS è un protocollo che consente alle app di comunicare tra loro utilizzando URL personalizzati. Ogni app può registrare uno o più schemi URL personalizzati (ad esempio , ]) nel suo file . Quando il sistema incontra un link che inizia con uno di questi schemi, lancia l'app corrispondente e passa l'URL completo ad esso.

Ad esempio, il noto schema []] può portare gli utenti direttamente a un tweet, un profilo utente, o la schermata di composizione a seconda del percorso allegato. Allo stesso modo, [] può aprire l'app Uber con una destinazione pre-riempita.

Da un punto di vista tecnico, i sistemi di URL utilizzano gli stessi elementi strutturali degli URL: uno schema, un host, un percorso opzionale e parametri di query. La differenza chiave è che lo schema non è [ o ma una stringa personalizzata registrata dall'app. Questo consente al sistema operativo di identificare in modo unico quale applicazione dovrebbe gestire il link.

Come Deep Linking funziona con gli schemi URL

Il collegamento profondo con i programmi di URL iOS comporta la costruzione di un URL che dice esattamente dove andare l'applicazione.

  • Scheme:[] L'identificatore di protocollo personalizzato (ad esempio, ])
  • Host:[]] Una stringa simile a un dominio che identifica l'area di destinazione (ad esempio , ]])
  • Path:] Uno o più componenti del percorso per specificare la risorsa esatta (ad esempio, ])
  • Parametri:[] Coppie di valore chiave di query che passano il contesto aggiuntivo (ad esempio, )

Se sì, lancia l'app e consegna l'URL al metodo del delegato dell'app. L'app poi analizza l'URL e naviga alla visualizzazione o alla schermata corrispondente. Se non è registrata alcuna applicazione, il sistema può tornare al browser web predefinito, ma solo se il link utilizza un collegamento universale (più avanti).

Per un profondo collegamento al lavoro in modo affidabile, gli sviluppatori devono garantire che la struttura dell'URL sia coerente nel contenuto web che ospita i link e nella logica di routing dell'app.

Apple ha introdotto Universal Links in iOS 9 come alternativa più sicura e senza soluzione di continuità ai programmi di URL personalizzati. Universal Links utilizza URL HTTP/HTTPS standard (ad esempio ) e richiedono la validazione sul lato server tramite un file . Quando un utente tocca un collegamento universale, iOS controlla il file, apre l'applicazione direttamente se è installato e non lascia alcun browser reindirizzato.

I sistemi di URL personalizzati, invece, hanno alcuni svantaggi: possono essere in conflitto con altre applicazioni (due applicazioni potrebbero registrare lo stesso schema), non cadono con grazia (il sistema mostra un errore se l'applicazione manca), e possono essere dirottati da applicazioni maligni. Nonostante queste limitazioni, i programmi di URL personalizzati sono ancora ampiamente utilizzati, soprattutto per i collegamenti profondi all'interno di un'unica app o per la comunicazione inter-app quando i Link Universal non sono supportati.

Per le applicazioni di produzione, Apple consiglia di utilizzare Universal Links come meccanismo di deep-linking primario e di rientrare in schemi di URL personalizzati per il supporto legacy o casi di utilizzo specifici. Molte applicazioni moderne, comprese quelle integrate con Directus, implementano sia per garantire la massima compatibilità tra le versioni iOS e le preferenze dell'utente.

Directus è un CMS senza testa che fornisce un API flessibile per la gestione dei contenuti. Quando si costruisce un'applicazione iOS che utilizza un collegamento profondo, è possibile utilizzare Directus per memorizzare le mappature tra i percorsi URL e gli elementi di contenuto. Ad esempio, ogni articolo o prodotto in Directus può avere un campo o ]] che diventa parte dell'URL di collegamento profondo.

Ecco come funziona una tipica integrazione:

  1. Definire le collezioni di contenuti[] in Directus (ad esempio ], ]]].
  2. Aggiungi campi[]] come , []], [ – la slitta viene spesso utilizzata nel percorso profondo del collegamento.
  3. Acquistare l'URL di collegamento profondo[[] dinamicamente sul front-end web o sul server utilizzando l'API Directus per prendere la slitta dell'elemento.
  4. Registra lo schema URL[] nell'app iOS (ad esempio ]).
  5. Parse il link[[]] all'interno dell'app e chiamate l'API Directus per recuperare il contenuto completo per la data slug.

Questo modello assicura che quando un editor di contenuti aggiorna un articolo in Directus, il link profondo indica automaticamente l'ultima versione – non sono necessari percorsi in codice duro.

Per illustrare, supponiamo che si abbia una collezione Directus con un campo . Quando si costruisce una pagina web che collega l'app iOS, si genera un tag di ancoraggio come:

<a href="directusapp://article/how-to-deep-link">Read in App</a>

All'interno dell'app iOS, dopo aver ricevuto l'URL, estrarresti la slitta e fare una richiesta GET a:

https://your-directus-project.example.com/items/articles?filter[slug][_eq]=how-to-deep-link

La risposta API contiene i dati completi dell'articolo, che poi si utilizza per populare la vista. Questo decouples l'applicazione da contenuti in codice duro e rende il collegamento profondo veramente dinamico.

Directus supporta anche i campi relazionali, in modo da poter inserire un link profondo nel profilo di un utente specifico o una relativa collezione. Ad esempio, ] potrebbe catturare l'utente dalla collezione e visualizzare i loro dettagli.

Quando si generano collegamenti profondi dal tuo front-end web, in genere si hanno due scelte: creare gli URL manualmente utilizzando lo schema personalizzato dell'app, o utilizzare i Link Universali. Con Universal Links, l'URL è semplicemente l'URL del sito pubblico (ad esempio, ). Il sistema iOS gestisce automaticamente la reindirizzamento in base al file [[annoFLT:30]]. Questo è spesso preferito perché funziona anche se l'applicazione non attiva l'utente

Per implementare i Link Universali con Directus, è necessario:

  • Host the JSON file alla radice del tuo dominio (ad esempio, ).
  • Assicurare che l'API Directus e il front-end web siano eseguiti sullo stesso dominio o siano configurati il file di associazione sul dominio web.
  • Nell'app iOS, abilitare “Domini associati” nella scheda Capacità di Xcode e aggiungere il dominio (ad esempio, ).
  • Maniglia in arrivo Link Universali nel metodo delegare.

Utilizzando Universal Links, si ottiene un'esperienza di deep-linking robusta e sicura che rispetta il contesto dell'utente.La flessibilità di Directus significa che è possibile gestire il contenuto di questi link in modo centralizzato, aggiornare slug, titoli, o anche reindirizzare vecchi link a nuovi contenuti senza toccare l'app.

Implementazione di schemi di URL personalizzati nella tua app iOS

Per iniziare con schemi di URL personalizzati in un progetto di Xcode, apri la tua app e aggiungi una chiave chiamata . In questo modo, crea un dizionario con un (solitamente l'identificatore di bundle della tua app) e una serie di ]] che contengono il tuo schema personalizzato (ad esempio, ).

Successivamente, implementare il metodo nel tuo (o l'equivalente del ciclo di vita SwiftUI). Questo metodo riceve l'URL e puoi analizzare i suoi componenti.

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
 let scheme = url.scheme // "directusapp"
 let host = url.host // "article"
 let path = url.path // "/how-to-deep-link"
 let params = url.queryParameters // ["ref": "campaign"]

 // Handle routing based on host and path
 if host == "article" {
 let slug = path.dropFirst() // remove leading "/"
 navigateToArticle(withSlug: String(slug))
 } else if host == "product" {
 // ...
 }
 return true
}

Questo snippet di codice presuppone che si abbia un'estensione per estrarre i parametri di query come dizionario. Con la slitta estratta, è possibile chiamare il client API Directus per catturare l'elemento contenuto e spingere il controller di vista appropriato.

Maneggiare i Fallbacks Gracefully

Poiché i programmi di URL personalizzati non offrono un fallback integrato, è necessario implementarne uno manualmente. Un approccio comune è quello di utilizzare un reindirizzamento JavaScript o un controllo lato server. Ad esempio, sul tuo sito web, è possibile rilevare il dispositivo dell'utente e cercare di aprire il link di schema personalizzato. Se non funziona (cioè, l'app non è installata), è possibile reindirizzare l'utente all'App Store o a una versione web mobile del contenuto.

Una tecnica è quella di usare il trucco con un timer:

<script>
 window.location = "directusapp://article/how-to-deep-link";
 setTimeout(function() {
 window.location = "https://apps.apple.com/your-app-id";
 }, 500);
</script>

Questo funziona su molti dispositivi, ma può essere inaffidabile se l'applicazione si apre lentamente. Un metodo più robusto è quello di utilizzare l'approccio [[ per iOS o integrare un servizio di collegamento profondo di terze parti come Branch o Firebase Dynamic Links. Quando si utilizza Directus, è anche possibile memorizzare l'URL App Store in una raccolta di sistema e prenderlo dinamicamente per il fallback.

Migliori Pratiche per il collegamento profondo in Directus-Powered Apps

Per creare un sistema di collegamento profondo di produzione con Directus, seguire queste linee guida:

  • Leggi gli URL umani.] Usare le slug invece di ID opaci quando possibile. Ad esempio, ] è più significativo di . I lugs possono essere generati da Directus con ganci o estensioni.
  • Sempre fornire un fallback.[ Per i sistemi di URL personalizzati, è essenziale un fallback alla versione web o App Store. Per Universal Links, il fallback è automatico (Safari).
  • Utilizza analisi.[] Il link profondo del tracciato si apre in Directus accedendo all'URL o utilizzando una raccolta dedicata per registrare quali link vengono intercettati.
  • Test su dispositivi reali.[] I test del simulatore non possono replicare completamente il comportamento Universal Link.
  • Segui il tuo schema.[] Usa i Link Universali su schemi personalizzati quando possibile per evitare la disfatta di schema. Se è necessario utilizzare uno schema personalizzato, renderlo unico – aggiunga il dominio inverso della tua azienda, ad esempio, .
  • Case di bordo maneggevole.[] Se l'API Directus restituisce un errore (ad esempio, la slitta non esiste più), mostrare una schermata di errore amichevole o reindirizzare a una schermata iniziale all'interno dell'app.

Aderendo a queste pratiche, si assicura che gli utenti che toccano un link profondo hanno un'esperienza liscia, se hanno installato o meno l'app.

Debugging link profondi possono essere difficili perché il sistema spesso memorizza i file di associazione o silenziosamente fallisce.

  • Utilizza il log della console.[ In Xcode, imposta un punto di rottura nei metodi delegata o aggiungi ] per vedere quali URL sono stati passati.
  • Simula collegamenti da Safari.] Puoi testare schemi di URL personalizzati digitando direttamente nella barra degli indirizzi di Safari. Per i Link Universali, devi ospitare il file di associazione e testare da un dominio reale.
  • Validare il file di associazione Apple-app-site. Apple fornisce uno strumento nella console Apple Developer per controllare il file. È inoltre possibile utilizzare validatori online come Branch’s AASA Validator.
  • Controllare i log del server. Se si utilizza Directus come backend, assicurarsi che il vostro endpoint API per la registrazione dei contenuti sia raggiungibile e restituisca i dati attesi.
  • Reimpostare la cache del dispositivo.[] iOS memorizza il file di associazione in modo aggressivo. È possibile forzare un aggiornamento riavviando il dispositivo o facendo leva sulla modalità aereo.

Per un test approfondito, creare una lista di controllo che copre sia scenari di app installati che disinstallati, diverse versioni iOS e vari formati di link (con e senza parametri).

Conclusioni

Combinando i programmi di URL iOS per un collegamento profondo con un CMS senza testa come Directus crea un sistema potente e flessibile per fornire contenuti direttamente agli utenti nella tua app mobile.

Per ulteriori informazioni, consultare la documentazione ufficiale di Apple su deep linking, ]Directus CMS documentazione, e questo Raywenderlich tutorial su Universal Links]] per esempi di implementazione passo passo.