Strumento gratuito
Generatore di AASA e assetlinks.json
Crea il file apple-app-site-association per gli Universal Links di iOS e il file assetlinks.json per gli App Links di Android. Inserisci i dati della tua app, poi copia o scarica un file pronto da caricare.
- Gratis, senza account
- Funziona nel tuo browser
- Formato components attuale di Apple
Hai già i file? Controllali con il validatore
App
Aggiungi ogni app che deve aprire i link di questo dominio. Ognuna diventa una voce di appIDs.
- App 1
10 caratteri, nel tuo account Apple Developer sotto Membership details.
Dal target della tua app in Xcode, per esempio com.example.app.
Percorsi che aprono l’app
Le regole vengono lette dall’alto in basso e vince la prima che corrisponde, quindi metti le esclusioni sopra le regole più ampie. * corrisponde a qualsiasi numero di caratteri, ? a uno solo.
- Regola 1
coppie nome=valore unite da &
Altri servizi
Il tuo file
apple-app-site-association
Esempio. Inserisci i tuoi dati per sostituirlo.
{
"applinks": {
"details": [
{
"appIDs": [
"ABCDE12345.com.example.app"
],
"components": [
{
"/": "/*"
}
]
}
]
}
}Generato nel tuo browser. Non viene inviato nulla.
Dove pubblicarlo
- Caricalo su
https://tuo-dominio/.well-known/apple-app-site-association, senza estensione.json. - Servilo in HTTPS con un certificato valido e un 200 diretto, senza redirect.
- Invia l’intestazione
Content-Type: application/json. - Ripeti su ogni host dei tuoi link:
example.comewww.example.comrichiedono ciascuno il file e una voceapplinks:. - La CDN di Apple recupera il nuovo file entro 24 ore. Nel frattempo prova con
?mode=developer.
Preferisci non ospitare file da solo? Gli smart link sono gratis e con Enterprise Appy serve entrambi i file sul dominio di link della tua app.
Crea un link gratisCome si incastra tutto
Due file, una verifica reciproca
Universal Links e App Links aprono la tua app solo quando le due parti garantiscono l’una per l’altra. L’app nomina il dominio e un file su quel dominio nomina l’app. Se manca una delle due metà, il link apre il tuo sito.
App iOS
Entitlement Associated Domains
applinks:example.comIl tuo dominio
example.com/.well-known/
apple-app-site-association
Indica l’app ID: Team ID più bundle ID
ABCDE12345.com.example.appassetlinks.json
Indica il nome del pacchetto e l’impronta SHA-256
com.example.app · 14:6D:E9:…
App Android
Intent filter con autoVerify
android:autoVerify="true"android:host="example.com"Le due metà corrispondono: il link apre l’app
Manca qualcosa: il link apre il tuo sito
Campo per campo
Cosa significa ogni chiave dei file
Entrambi i file sono semplice JSON. Ecco le chiavi che scrive il generatore, più quelle facoltative che vale la pena conoscere.
apple-app-site-association
applinks- Il servizio Universal Links. Tutto ciò che decide quale URL apre quale app sta qui dentro.
details- Un array di voci, ognuna delle quali abbina un gruppo di app a un gruppo di regole URL. Usane più di una se app diverse gestiscono percorsi diversi.
appIDs- App ID nel formato
<Team ID>.<bundle ID>, per esempioABCDE12345.com.example.app. Ogni app deve indicare il dominio anche nel proprio entitlement Associated Domains. components- Le regole URL, lette in ordine. La prima che corrisponde decide se l’app si apre.
/- Un pattern per il percorso dell’URL, come
/products/*. Se lo ometti, va bene qualsiasi percorso. ?- I parametri di query da far corrispondere, come dizionario.
{"ref": "?*"}richiede un parametrorefnon vuoto. #- Un pattern per il frammento dopo
#. exclude- Impostalo su
trueper lasciare sul sito gli URL che corrispondono. Metti queste regole sopra quelle più ampie. comment- Una nota per chi legge il file. iOS la ignora.
webcredentials- Facoltativo. Elenca le app che possono usare con il riempimento automatico le password salvate per questo sito.
appclips- Facoltativo. Elenca le App Clip che questo dominio può avviare.
* corrisponde a qualsiasi numero di caratteri, ? a uno solo e ?* ad almeno uno. Il confronto distingue maiuscole e minuscole, a meno che tu non aggiunga "caseSensitive": false.
assetlinks.json
[ ]- Il file è un array JSON di dichiarazioni, anche quando ne contiene una sola.
relationdelegate_permission/common.handle_all_urlspermette all’app di aprire i link di questo sito.delegate_permission/common.get_login_credsaggiunge la condivisione delle credenziali.target- L’app a cui si riferisce la dichiarazione.
namespace- Sempre
android_appper un’app Android. package_name- L’applicationId dell’app, per esempio
com.example.app. sha256_cert_fingerprints- Le impronte SHA-256 dei certificati che firmano l’app, in coppie maiuscole separate da due punti. Elenca ogni chiave che firma build installate dagli utenti.
relation_extensions- Facoltativo, da Android 15 in poi. Il suo
dynamic_app_link_componentsaggiunge regole sui percorsi nello stile dei components di Apple. Le versioni precedenti lo ignorano.
Il vecchio formato paths
Prima di iOS 13 ogni voce aveva un solo appID, un array paths con NOT davanti alle esclusioni, e il file richiedeva un array apps vuoto. iOS 13 e successivi leggono appIDs e components. Il generatore scrive solo il formato moderno. Se supporti ancora iOS 12, aggiungi le vecchie chiavi nella stessa voce.
{
"applinks": {
"apps": [],
"details": [{
"appID": "ABCDE12345.com.example.app",
"paths": ["NOT /help/website/*", "/buy/*"]
}]
}
}{
"applinks": {
"details": [{
"appIDs": ["ABCDE12345.com.example.app"],
"components": [
{"/": "/help/website/*", "exclude": true},
{"/": "/buy/*"}
]
}]
}
}Errori comuni
Perché un file che sembra corretto fallisce lo stesso
Il JSON può essere valido e i link aprire comunque il sito. Controlla questi sette punti prima di tutto il resto.
- 01iOS
Prefisso del Team ID sbagliato
Il file si carica, ma iOS non apre mai l’app.
Soluzione
Usa il Team ID dell’account che firma la release, quello sotto Membership details. Non l’ID numerico dell’App Store, non un Key ID e nemmeno il team di un’agenzia se l’app viene pubblicata dal tuo account.
Guida completa agli Universal Links per iOS e Android - 02Android
Chiave di caricamento al posto della chiave di firma di Play
Le tue build aprono l’app, le installazioni da Google Play aprono il browser.
Soluzione
Google firma le app che distribuisce con la chiave di firma dell’app. Copia il suo SHA-256 da Play Console, in Integrità dell’app, e lascia nell’elenco la chiave di caricamento solo se condividi build firmate con quella.
App Links Android non verificati: diagnosi in cinque minuti con adb - 03iOS + Android
Il file si trova dietro un redirect
L’URL si apre senza problemi nel browser, ma la verifica fallisce.
Soluzione
Apple e Android si aspettano un 200 all’URL esatto. Escludi
Universal Links aprono Safari? Correggi AASA, App Links, redirect e header/.well-known/dai redirect dal dominio senza www al www, dal www al dominio senza www e per lingua. - 04iOS + Android
Content type sbagliato, o HTML al posto di JSON
Il file c’è, ma la piattaforma lo ignora.
Soluzione
Servi entrambi i file come
Universal Links aprono Safari? Correggi AASA, App Links, redirect e headerapplication/json. Spesso i server inviano il file AASA, che non ha estensione, comeapplication/octet-stream, e alcuni hosting rispondono con una pagina di login o un controllo anti-bot. - 05iOS + Android
Dimenticare l’host www
I link a example.com aprono l’app, quelli a www.example.com aprono il sito.
Soluzione
Ogni host viene verificato a sé. Carica il file su entrambi, inseriscili entrambi in Associated Domains e dichiarali entrambi negli intent filter Android.
Guida completa agli Universal Links per iOS e Android - 06iOS
Un’esclusione sotto una regola generica
Pagine che volevi lasciare sul sito aprono l’app.
Soluzione
Vince la prima regola che corrisponde. Sposta le regole
excludesopra/*, come fa l’esempio di Appy nel generatore. - 07iOS
Un’estensione .json o la cartella sbagliata
All’indirizzo richiesto da iOS non c’è niente.
Soluzione
Il file si chiama
apple-app-site-association, senza estensione, e va in/.well-known/. Il pulsante di download qui sopra usa già questo nome.
Niente hosting da gestire
Lascia che sia Appy a servire entrambi i file
Con Enterprise la tua app riceve un dominio di link tutto suo, e Appy ci ospita apple-app-site-association e assetlinks.json, generati da Team ID, bundle ID, pacchetto e impronte che registri. Gli smart link sono gratis e i deep link arrivano con Pro.
- Piano gratuito
- Nessuna carta di credito
- Clic illimitati su ogni piano
- I link continuano a funzionare anche se disdici
Domande frequenti
Che cos’è un file apple-app-site-association?
Un file JSON sul tuo dominio che dice a iOS quali app possono aprire quali URL come Universal Links. Si trova in https://tuo-dominio/.well-known/apple-app-site-association, non ha estensione ed elenca gli app ID (Team ID più bundle ID) con le regole URL di ciascuno.
Che cos’è assetlinks.json?
L’equivalente Android, basato su Digital Asset Links di Google. Si trova in https://tuo-dominio/.well-known/assetlinks.json e indica il pacchetto e le impronte del certificato di firma dell’app autorizzata ad aprire i tuoi link. Android lo controlla quando l’app viene installata e solo allora tratta i tuoi link come App Links verificati.
Dove carico i file generati?
Nella cartella /.well-known/ alla radice di ogni host che usi nei link. Entrambi i file devono caricarsi in HTTPS con un 200 diretto, senza redirect e con il content type application/json. Sugli hosting statici serve spesso una regola per le intestazioni del file AASA, perché non ha estensione.
Dove trovo il mio Team ID e il bundle ID?
Il Team ID è nel tuo account Apple Developer, sotto Membership details. Il bundle ID è nella scheda General del target della tua app in Xcode. Insieme formano l’app ID, per esempio ABCDE12345.com.example.app.
Come ottengo l’impronta SHA-256 per assetlinks.json?
Se è Google Play a firmare la tua app, apri Play Console, vai in Integrità dell’app e copia lo SHA-256 del certificato della chiave di firma dell’app. Per le chiavi che custodisci tu, esegui keytool -list -v -keystore my-release-key.keystore oppure ./gradlew signingReport. Il generatore accetta il valore con o senza due punti.
Nel file AASA conviene usare paths o components?
Usa components. Apple l’ha introdotto con iOS 13 e supporta parametri di query, frammenti, esclusioni e commenti. Il vecchio array paths serve solo se supporti ancora iOS 12 o precedenti; in quel caso metti entrambi nella stessa voce.
Un solo file può coprire più app?
Sì. Nel file AASA elenca ogni app ID in appIDs, oppure aggiungi voci details separate se le app gestiscono percorsi diversi. In assetlinks.json aggiungi all’array una dichiarazione per pacchetto. Il generatore gestisce più app iOS; per un secondo pacchetto Android, copia la dichiarazione e cambia nome del pacchetto e impronte.
Quanto tempo serve perché le modifiche arrivino sui dispositivi?
Secondo Apple, la sua CDN richiede il tuo file AASA entro 24 ore e i dispositivi controllano gli aggiornamenti circa una volta a settimana dopo l’installazione. Android verifica quando l’app viene installata; su un dispositivo di test, adb shell pm verify-app-links --re-verify com.example.app ripete il controllo.
Devo firmare il file AASA?
No. Firmarlo con il certificato TLS era necessario solo su iOS 8. Da iOS 9 in poi Apple si aspetta un semplice file JSON servito in HTTPS.
Quello che inserisco viene inviato ad Appy?
No. I file vengono generati da codice che gira nel tuo browser e niente di ciò che scrivi viene caricato o salvato. Il validatore funziona diversamente: quando lo avvii, scarica i file dal tuo dominio.
Prossimi passi
Controlla il risultato e continua a leggere
- Strumento gratuitoValidatore di Universal LinksQuando i file sono online, controllali sul tuo dominio, sulla CDN di Apple e tramite l’API Digital Asset Links di Google.
- GuidaGuida completa agli Universal Links per iOS e AndroidGuida completa a universal links, deep links e app links: implementazione e best practice per il mobile marketing.
- GuidaUniversal Links aprono Safari? Correggi AASA, App Links, redirect e headerWorkflow pratico per risolvere universal links e app links che aprono il browser invece dell’app.
- GuidaApp Links Android non verificati: diagnosi in cinque minuti con adbDa Android 12, un App Link che fallisce la verifica del dominio si apre nel browser invece che nella tua app — in silenzio, e non su tutti i dispositivi. La checklist adb che trova la causa in fretta.
- GuidaDeep Linking vs Universal Links: confronto completoComprendi le differenze chiave tra deep link e universal link, quando usare ciascun approccio e come implementarli correttamente.