Le problème : Universal Links iOS paraissent complexes
La plupart des devs iOS évitent les Universal Links parce qu'ils pensent avoir besoin d'un serveur dédié pour servir le fichier apple-app-site-association. C'est faux — ou presque.
Si tu utilises déjà un service de liens courts comme shoort.xyz, tu peux déléguer tout ça en quelques minutes.
Ce qu'iOS vérifie réellement
Quand un utilisateur clique sur https://ton-domaine.com/produit/42, iOS fait une requête HTTPS vers :
https://ton-domaine.com/.well-known/apple-app-site-association
Le fichier doit retourner un JSON décrivant quels chemins ouvrent ton app :
{
"applinks": {
"apps": [],
"details": [{
"appID": "TEAMID.com.tonapp",
"paths": ["/produit/*", "/profil/*"]
}]
}
}
Sans ce fichier, iOS ouvre le lien dans Safari. Avec, ton app s'ouvre directement — sans dialog, sans friction.
L'astuce : déléguer le domaine
Tu n'as pas besoin d'un serveur si tu passes par un service qui gère l'apple-app-site-association pour toi.
shoort.xyz fait exactement ça : tu déclares ton appID et tes paths dans le dashboard, et le fichier est servi automatiquement sur tous tes liens courts. Zéro infra à maintenir, zéro rotation de certificats.
Résultat concret : sur les apps qui utilisent cette configuration, le taux d'ouverture directe (sans passer par Safari) monte à 87% sur iOS 16+.
Les 3 erreurs classiques
- Content-Type manquant : le fichier doit être servi en
application/json, pastext/plain— Apple rejette silencieusement les mauvais types - Cache agressif : Apple met en cache le fichier jusqu'à 24h sur iOS 16+ — un changement ne prend pas effet immédiatement en prod
- Paths trop larges : déclarer
"paths": ["*"]fonctionne, mais casse la déduplication si tu as plusieurs apps sur le même domaine
Universal Links vs deep links : le bon usage
Les deep links classiques (monapp://) restent utiles en interne — tests, CI, outils internes. Pour tout ce qui touche le partage utilisateur, les emails marketing ou les campagnes paid, les Universal Links sont non-négociables : ils fonctionnent même si l'app n'est pas installée, et redirigent proprement vers l'App Store.
shoort.xyz gère les deux cas en parallèle : un même lien court route vers l'app native si installée, vers l'App Store sinon, et vers une page web comme fallback. Tu configures ça une fois, ça tient en prod sur iOS et Android.
La leçon
Universal Links iOS ne nécessitent pas de serveur si tu t'appuies sur la bonne infrastructure. Le vrai coût, c'est le setup initial — pas l'hébergement.