Creare Deep Link con DyLy

⏱️5 min
Condividi:

DyLy è un servizio che accorcia gli URL e semplifica la creazione dei Deep Link. In questo articolo vediamo come creare Deep Link in modo efficiente con DyLy.

Che cos'è un Deep Link

Un Deep Link permette di aprire direttamente l'app, invece del browser, quando si accede a un collegamento. Se l'app non è installata, l'utente viene indirizzato allo store e, dopo l'installazione, si apre la pagina specificata.

Apple supporta ufficialmente il "passaggio senza soluzione di continuità dal browser all'app" tramite Universal Links, mentre Google offre un'esperienza simile con Android App Links. Come spiegato nella guida di Apple ai Universal Links e nella documentazione Android App Links di Google, i Deep Link non migliorano solo l'esperienza utente, ma contribuiscono anche a sicurezza e conversioni migliori.

Casi d'uso

Esistono molti modi per sfruttare i Deep Link.

Collegamenti diretti a contenuti (video, ecc.)

È possibile condividere un collegamento sui social e portare gli utenti direttamente a un contenuto specifico. Sul web questo è scontato, ma con i Deep Link anche le app mobili possono aprire immediatamente i contenuti interni. Inoltre, è possibile aggiungere parametri di query per analizzare il canale di provenienza o altre metriche.

Link di invito

I Deep Link consentono di invitare qualcuno in un gruppo o in un'area dell'app. Quando la persona invitata fa clic sul collegamento, l'app si apre e il processo di invito ha inizio. Se l'app non è installata, l'utente viene reindirizzato allo store e, dopo l'installazione, il flusso riprende.

Reindirizzamenti

Quando si imposta un'app come destinazione di reindirizzamento in un flusso OAuth, si può ricorrere a uno schema personalizzato (ad esempio myapp://), ma c'è il rischio di intercettazione delle informazioni. Con un Deep Link è invece possibile ricevere il reindirizzamento in modo sicuro direttamente nell'app.

Implementazione

Vediamo ora come implementare concretamente un Deep Link. Esistono molti servizi; qui utilizzeremo DyLy.

Creazione dei metadati

È necessario associare il dominio all'applicazione. Per maggiori dettagli consulta la documentazione ufficiale Apple e la documentazione ufficiale Google. In sintesi, occorre ospitare sul web un endpoint che dimostri la proprietà del dominio e il collegamento con l'app, in modo che Apple e Google possano verificarlo.

Basta restituire un JSON nel formato richiesto. Puoi ospitarlo su S3 o servizi simili, ma DyLy offre una funzionalità che semplifica questo passaggio.

DyLy consente di creare un cosiddetto JSON link, che restituisce il JSON definito alla destinazione del collegamento. Si può inviare una richiesta API come la seguente.

bash
1curl -X POST "https://dyly-api.lilacwells.com/url/api/v1/links" \
2 -H "Authorization: Basic ${YOUR_CREDENTIALS}" \
3 -H "Content-Type: application/json" \
4 -d '{
5 "type": "json",
6 "projectId": "your-project-id",
7 "path": ".well-known/apple-app-site-association",
8 "rawJson": {
9 "applinks": {
10 "apps": [],
11 "details": [
12 {
13 "appIDs": ["TEAM123.com.example.app"],
14 "paths": [
15 "NOT /_/*",
16 "NOT /deferred-params",
17 "/*"
18 ]
19 }
20 ]
21 }
22 }
23 }'

Configurazione lato app

Configura poi le app seguendo le procedure di ciascun sistema operativo.

iOS

In Xcode aggiungi Associated Domains sotto Signing & Capabilities e registra il dominio, ad esempio applinks:example.com.

Android

Aggiungi <intent-filter android:autoVerify="true"> in AndroidManifest.xml e verifica il dominio con android:autoVerify.

Se l'accesso avviene dal browser, puoi configurare il collegamento per reindirizzare a qualsiasi URL.

Creare il link

Infine crea il collegamento in DyLy. Impostando type su deep ottieni un Deep Link come nell'esempio.

bash
1curl -X POST "https://dyly-api.lilacwells.com/url/api/v1/links" \
2 -H "Authorization: Basic ${YOUR_CREDENTIALS}" \
3 -H "Content-Type: application/json" \
4 -d '{
5 "type": "deep",
6 "projectId": "your-project-id",
7 "path": "groups/awesome-group",
8 "destinationUrl": "https://apps.apple.com/app/yourapp/id123456",
9 "jwtClaims": {
10 "invitationId": "inv-789xyz",
11 "invitedBy": "user-123",
12 "groupId": "awesome-group",
13 "groupName": "Awesome Group",
14 "permissions": "member",
15 "timestamp": 1735894404
16 },
17 "jwtExpiresIn": 300,
18 "expiresIn": 2592000,
19 "keyProtected": false,
20 "oneTime": false
21 }'

I valori inseriti in jwtClaims sono inclusi nel JWT, quindi vanno gestiti con attenzione.

Dopo aver creato il Deep Link, DyLy genera un collegamento con un JWT come parametro di query.

Gestione del link nell'applicazione

Quando l'utente fa clic sul collegamento, l'app lo riceve. Procedi quindi come segue.

Verificare il JWT

Accertati che il collegamento sia stato emesso da DyLy.

Prima, un rapido ripasso sui JWT. Un JWT è, in parole povere, un JSON firmato. Verificando la firma puoi confermare l'emittente e assicurarti che il contenuto non sia stato manomesso.

Chiunque può creare collegamenti, dunque è necessario distinguere quelli non ufficiali. I collegamenti legittimi sono firmati con la chiave privata di DyLy, e l'app può verificare la firma per confermare che il link è autentico e che i parametri non sono stati modificati.

DyLy adotta la tecnologia JWT, ampiamente utilizzata, quindi puoi appoggiarti alle librerie JWT esistenti per la verifica della firma.

Per questo motivo, l'applicazione deve innanzitutto verificare il JWT quando riceve il collegamento.

Controllare i parametri

Una volta confermata la firma, estrai i parametri e esegui l'elaborazione necessaria.

Per esempio, per un link di invito puoi recuperare l'ID del gruppo o altri identificatori.

Ricorda che, sebbene il JWT sia firmato, il suo contenuto non è crittografato (esistono JWT crittografati, ma rappresentano un formato diverso).

Ciò significa che chiunque può leggere il contenuto del JWT. Evita quindi di inserire dati sensibili o personali nel JWT. Per un link di invito basta inserire identificativi come l'ID del gruppo e conservare le informazioni dettagliate lato server.

Deferred Deep Link

Se l'utente apre il collegamento su un dispositivo in cui l'app non è installata, verrà reindirizzato allo store e, dopo l'installazione, potrà aprire la pagina prevista dal Deep Link. Questo meccanismo è chiamato Deferred Deep Link. Anche DyLy lo supporta.

Per prima cosa, l'utente tocca il collegamento su un dispositivo mobile senza l'app. Poiché l'app manca, il collegamento viene eseguito nel browser e raggiunge i server di DyLy. DyLy registra informazioni come l'indirizzo IP e il sistema operativo del dispositivo, quindi reindirizza l'utente allo store.

Quando l'app viene avviata per la prima volta dopo l'installazione, chiede a DyLy se il dispositivo aveva già aperto il collegamento. In base ai dati della richiesta (IP, sistema operativo, ecc.) DyLy verifica se c'è stato un accesso precedente e, in caso affermativo, restituisce all'app il Deep Link corrispondente.

In questo modo l'app può recuperare le informazioni del Deep Link al primo avvio dopo l'installazione.

Per maggiori dettagli consulta la documentazione ufficiale di DyLy.

Riepilogo

Con DyLy è semplice implementare i Deep Link. Nel prossimo articolo approfondiremo la creazione di link di invito e altri scenari concreti.

Riferimenti

Condividi:

Articoli correlati

Applicazione Android CI/CD con Flutter
Guides

Applicazione Android CI/CD con Flutter

Scopri come costruire pipeline CI/CD per app Android con Flutter. Basato su GitHub Actions, senza usare fastlane.

mark241
Come localizzare l'app in Flutter
Guides

Come localizzare l'app in Flutter

Scopri come localizzare la tua app Flutter usando i file arb. Questo articolo è basato su Flutter 2.0.1.

mark241