Seguici su Telegram, ne vale la pena ❤️ ➡ @trovalost
Vai al contenuto

Linkare cose: guida pratica al deep linking

Il deep linking è quasi certamente, nella mia esperienza, una delle caratteristiche meno utilizzate e più bistrattate in assoluto per quello che riguarda, nello specifico, una corretta user experience. Mi riferisco nello specifico al mobile deep linking, ovvero quella caratteristica per cui se clicchi su un link di un’app specifica si apre in automatico quell’app (classico esempio: post su X o su Facebook). Più facile da dirsi che da farsi, e con un supporto ancora poco uniforme su vari dispositivi e app.

Di suo, il W3C (l’organismo internazionale che si occupa di standard per il web) non opera intenzionalmente alcuna distinzione tra deep link e link ordinari (quelli dei siti che si aprono nel browser), perchè idealmente ogni link dovrebbe funzionare in modo trasparente a prescindere dal tipo. Dovrebbe, in realtà, per quanto abbiano sempre sconsigliato di limitare l’uso in qualsiasi modo, ed i primi a non aver seguito questa politica sono proprio i sistemi operativi mobile, a quanto pare, senza contare il lassismo con cui certi programmatori sembrano aver previsto il funzionamento.

Premessa – Bisognerebbe inquadrare correttamente il caso base, prima di affrontare la miriade di sottocasi possibili. Prima cosa da sapere: in genere se un dispositivo (telefono, tablet, computer) apre un link qualsiasi, è il sistema operativo del dispositivo a “stabilire” con cosa debba essere aperto. Per intenderci: ad ogni link viene mappato o fatto corrispondere un’app preferenziale, che l’utente può in alcuni casi scegliere (una volta per sempre o per ogni singolo caso).

Ad esempio:

  • sitogenerico.it -> Google Chrome, Firefox, Safari, … (browser)
  • facebook.com -> app Facebook
  • twitter.com -> app Twitter
  • Linkedin.com -> app Linkedin

In parte la questione dipende da questo, considerando vari blocchi imposti da alcuni sistemi. Su tutti: iOS può non permettere ai deep link di aprire l’app corrispondente, a meno che non si tratti di un’inserzione. Sembra quasi ragionevole lato iOS, ma probabilmente non lo è, anche perchè per vedere le inserzioni devi aver abilitato delle spunte di privacy in precedenza e questo complica ulteriormente la gestione.

Il tutto crea vari considerevoli casi di scarsa usabilità, se si considerano ad esempio situazioni del genere:

  • un utente chiede di essere disiscritto da una newsletter, cosa che dovrebbe poter fare con un link a Unsubscribe presente su ogni footer di ogni email commerciale. Se questo deep link non funziona a dovere, l’utente si trova davanti una schermata di login all’interno di un browser, quando in realtà dovrebbe poter entrare in automatico mediante un token a scadenza one-time. Il “muro” imposto da un login forzoso (e tutt’altro che necessario, dato che magari l’utente aveva l’app già installata e gli basterebbe aprirla per essere già dentro con le sue credenziali) in questo caso crea un blocco di usabilità.
  • l’app bancaria di cui faccio attualmente uso, ad esempio, impone periodicamente un ripristino della password (e questo va bene) ma per farlo passa all’interno di una finestra del browser esterna all’app (il che va molto meno bene: da un lato, diventa un distrattore considerevole per l’utente che, in quel momento, potrebbe ritrovarsi spiazzato e insicuro sul da farsi, senza contare che questo passaggio in più è potenzialmente soggetto ad attacchi man in the middle). Anche qui, un walled garden insuperabile, abbastanza difficile da capire per l’utente medio.
  • un amico mi invia un post su Twitter/X e non riesco ad aprirlo, non solo perchè non ho Twitter/X ma anche perchè su alcuni cellulari i deep link non funzionano. Difficile, anche qui, spiegare cosa fare: anche installato l’app in questione non è detto che il sistema operativo che sto usando mi permetta di aprire l’app.
  • un social media manager (grazie Bennaker per lo spunto :-) ) condivide l’URL di un post su Facebook, ma pur avendo installato l’app di FB mi viene aperta in una pagina del browser, nel quale tipicamente le credenziali di accesso vanno aggiunte e questo, di fatto, può creare un accesso difficoltoso (considerando la grande diffusione dei gestori di password, in molti non ricordano l’accesso a memoria, e l’autenticazione a due fattori può rallentare ulteriormente l’esecuzione del compito).

Deep link su Android

Di fatto, i deep link sono onnipresenti su app social, web e applicativi di ogni specie, ma vengono usati spesso senza sapere bene cosa siano e come funzionino. Di suo, il programmatore dell’app contenitore (cioè l’app che sta offrendo il servizio di condivisione link) potrebbe fare in modo di rendere i link in modo tale che si possano aprire con una o più app, a patto di specificarlo nel manifest dell’app stessa (non entro nei dettagli, per brevità, ma è una cosa che molti dimenticano completamente di fare, e questa dimenticanza implica il fatto che sia il sistema operativo Android o iOS ad avere l’ultima parola).

Questo porta a deep link che, una volta cliccati, possiamo far aprire con Chrome oppure con Google Maps, a scelta dell’utente.app disambiguation 2x

Ovviamente in molti casi reali non abbiamo accesso al manifest di WhatsApp o Telegram, per cui dobbiamo affidarci a come (non) sono stati configurati.

Concetto di schema

Di suo ogni link segue uno schema prefissato, che è del tipo:

protocollo://path

ovvero un protocollo seguito dai simboli :// ed un path, eventualmente composto da più “pezzi”. Nella pratica, protocollo è quasi sempre HTTPS, a volte è ancora HTTP (senza crittografia), e questo “suggerisce” in qualche modo che il link debba aprirsi con un browser standard come Chrome o Firefox.

Alla base del problema di cui parliamo c’è l’abuso di HTTP(S), ovviamente, ed il fatto che uno condivida senza pensarci troppo quasi sempre link del genere. I sistemi operativi si sono col tempo attrezzati di conseguenza, e ad esempio il mio iOS “capisce” a seconda del path cosa aprire:

nello specifico, https://linkedin.com apre l’app di Linkedin e mi fa accedere al contenuto del path senza altri passaggi;

https://m.facebook.com sembra invece, stranamente, non funzionare (apre una finestra del browser dalla quale dovrei fare login da zero); appare in alto “apri nell’app di Facebook”, ma la password mi viene richiesta comunque e di fatto il flusso è bloccato lo stesso.

https://facebook.com esibisce, di fatto, lo stesso comportamento.

Come si dovrebbe fare

Un approccio molto diffuso (e secondo me solo confusionario) prevede l’uso di app (gratuite e a pagamento) che costruiscano i deep link automaticamente. Approccio che secondo me non funziona o lo fa solo in alcuni casi, oltre a introdurre vincoli di contenuto non da poco (se il servizio viene dismesso in futuro, ad esempio – cosa tutt’altro che improbabile data la miriade di servizi che soppiantano goo.gl, per chi lo ricorda – tutti i link smetterebbero di funzionare contemporaneamente).

La cosa migliore è sempre quella, secondo me, di scrivere gli URL a mano. Le regole del corretto mobile deep linking suggeriscono di fare uso di URI (per la precisione, non di URL), cioè di schemi identificatori di link che siano preceduti dal nome dell’app che si vuole far aprire. Con ovvio significato dei termini, ad esempio:

twitter://youtube://

quindi come ulteriori esempio:

eBay://item/view?id=360703170135

fb://profile/33138223345

Andrebbe tutto benissimo ma lo standard non è supportato al 100%, e HTTPS: rimane il modo più sicuro per “far capire” all’utente quello che deve fare, ed in questo caso meglio una cosa scomoda che nulla. Il problema di fondo è che funzionano tendenzialmente solo in HTML, mentre usandoli come link ordinari dentro programmi di instant messaging funzionano in modo ad oggi non troppo uniforme (su WhatsApp da me non sono cliccabili, mentre su Telegram sì). Si attende, pertando, una maggiore uniformità di trattamento dei deep link nei prossimi tempi, in attesa di trovare un accordo rispetto ai numerosi standard in gioco, considerando il discorso dei manifest delle singole app che, soprattutto, le scelte dei vari sistemi operativi. Foto di thank you for da Pixabay

👇 Da non perdere 👇



Questo portale web esiste da 4496 giorni (12 anni), e contiene ad oggi 5126 articoli (circa 4.100.800 parole in tutto) e 15 servizi online gratuiti. – Leggi un altro articolo a caso
Non ha ancora votato nessuno.

Ti sembra utile o interessante? Vota e fammelo sapere.

Questo sito contribuisce alla audience di sè stesso.
Il nostro network informativo: Lipercubo - Pagare online (il blog) - Trovalost.it