URL Scheme : qu'est-ce que c'est, comment ça fonctionne et son utilisation en développement

Auteur : IT Sectr Publié le : 2026-05-14 Temps de lecture : 8 min

URL Scheme — est un protocole URI personnalisé qu'une application mobile enregistre dans le système d'exploitation pour être ouvert via des liens comme myapp://path. Selon la RFC 3986, le schéma URI définit la syntaxe et la sémantique de tous les composants suivants de l'adresse. En naviguant vers un tel lien, le système identifie l'application enregistrée par son identifiant unique et la lance avec les paramètres extraits du lien. Le Deep link basé sur URL Scheme reste le mécanisme de base de la navigation inter-applications sur les plateformes mobiles, malgré l'émergence d'alternatives plus modernes.

Points clés

  • URL Scheme — un protocole de lien personnalisé comme myapp://path qu'une application enregistre pour être ouverte depuis d'autres apps ou le navigateur.
  • Syntaxe inclut le schéma, l'hôte, le chemin et les paramètres de requête selon la norme RFC 3986, offrant un transfert de données flexible entre les applications.
  • iOS utilise CFBundleURLTypes dans Info.plist et le délégué AppDelegate pour traiter les URL Schemes entrants avec des paramètres de navigation.
  • Android utilise Intent Filter dans AndroidManifest.xml en spécifiant action, category et data pour acheminer les deep links vers l'Activity cible.
  • Limitation — URL Scheme ne fonctionne pas lorsque l'application n'est pas installée, ce qui est résolu via Universal Links sur iOS et App Links sur Android.

Qu'est-ce que URL Scheme ?

URL Scheme — est un identifiant de protocole unique qu'une application enregistre dans le système d'exploitation pour recevoir des appels via des liens personnalisés. Lorsqu'un utilisateur clique sur un lien comme myapp://profile/123, le système identifie l'application qui a enregistré le schéma myapp et lui transmet le contrôle avec l'URI complet. Ce mécanisme permet aux applications d'échanger des données et de s'ouvrir mutuellement sans nécessiter d'infrastructure serveur.

Le concept d'URL Scheme est directement emprunté aux standards web RFC 3986, où le schéma URI est le premier composant de tout identifiant universel de ressource. Dans le développement mobile, cette idée est adaptée pour la communication inter-applications, où au lieu d'un serveur HTTP, l'application elle-même agit comme gestionnaire de lien.

Exemples d'URL Schemes connus

De nombreuses applications populaires enregistrent leurs propres URL Schemes pour l'intégration avec des services tiers. Par exemple, Spotify utilise le schéma spotify://, Telegram utilise tg://, et Instagram utilise instagram://. Les développeurs créent également souvent des schémas comme appname:// pour la navigation interne et les tests de bout en bout des écrans.

Les URL Schemes sont encore largement utilisés dans les notifications push, les newsletters par e-mail et les codes QR où une navigation instantanée vers une section spécifique de l'application est requise. Cependant, à partir d'iOS 9 et Android 6, des mécanismes alternatifs sont apparus qui complètent et remplacent progressivement les schémas simples.

Syntaxe URL Scheme : schéma, hôte et chemin

La structure d'un URI personnalisé suit la spécification générale RFC 3986 et se compose de plusieurs composants. Le schéma est spécifié en premier et séparé par deux-points du reste de l'adresse. Après le schéma peuvent suivre l'hôte, le port, le chemin, les paramètres de requête et le fragment, chacun étant optionnel.

La syntaxe complète ressemble à scheme://host/path?key=value#fragment. Le schéma est le seul élément obligatoire ; le reste est déterminé par les besoins de l'implémentation spécifique. La double barre après le schéma est historiquement empruntée à HTTP et n'est pas strictement obligatoire selon la spécification, mais est universellement utilisée comme convention.

Composants de l'URI

Pour une représentation visuelle de la structure de l'URI, un tableau de composants est utilisé. Chaque élément a son objectif et son niveau d'obligation.

ComposantExempleObligatoire
SchememyappOui
HostprofileNon
Path/user/42Non
Query?id=42&tab=mainNon
Fragment#section2Non

Les développeurs peuvent choisir arbitrairement la structure de l'URI, ce qui crée de la flexibilité mais génère des problèmes de compatibilité entre différentes versions de l'application. Il est recommandé de documenter le format URL Scheme dans le cadre de l'API publique de l'application et de le versionner lors des modifications.

Comment URL Scheme fonctionne sur iOS

iOS exige un enregistrement explicite de chaque URL Scheme dans le fichier Info.plist du projet. Le développeur ajoute un tableau CFBundleURLTypes, dont chaque élément contient un identifiant (CFBundleURLName) et une liste de schémas pris en charge (CFBundleURLSchemes). Après l'enregistrement, le système dirige automatiquement tous les appels entrants sur les schémas enregistrés vers l'application.

Le traitement d'un URL Scheme entrant s'effectue dans le délégué de l'application via la méthode application(_:open:options:). Cette méthode reçoit un objet URL dont le chemin et les paramètres de requête sont extraits pour prendre des décisions de navigation. Le gestionnaire doit retourner une valeur Bool indiquant le succès de l'opération.

Traitement dans AppDelegate

Voici un exemple d'implémentation d'un gestionnaire URL Scheme en Swift. Le code démontre l'extraction de l'hôte et des paramètres de requête d'un URI entrant à l'aide d'URLComponents.

swift
func application(
    _ app: UIApplication,
    open url: URL,
    options: [UIApplication.OpenURLOptionsKey: Any]
) -> Bool {
    let host = url.host
    let params = URLComponents(
        url: url,
        resolvingAgainstBaseURL: false
    )?.queryItems
    if host == "profile" {
        navigateToProfile(params)
    }
    return true
}

La méthode utilise URLComponents pour une analyse sécurisée des paramètres de requête. Cette approche est préférable à l'analyse manuelle de chaînes car elle gère automatiquement l'encodage en pourcentage et le décodage des caractères spéciaux dans les valeurs des paramètres.

Comment URL Scheme fonctionne sur Android

Android utilise le système Intent Filter pour acheminer les deep links basés sur URL Scheme. Le développeur déclare un filtre dans AndroidManifest.xml à l'intérieur de la balise Activity qui doit traiter le lien. Le filtre contient l'action VIEW, les catégories BROWSABLE et DEFAULT, et une balise data spécifiant le schéma, l'hôte et pathPrefix.

Lorsqu'un utilisateur clique sur un lien avec un schéma personnalisé, le système vérifie l'Intent Filter de toutes les applications installées. Si plusieurs applications correspondantes sont trouvées, une boîte de dialogue de sélection est présentée à l'utilisateur. La catégorie BROWSABLE permet le traitement du lien depuis le navigateur.

Configuration d'Intent Filter

Exemple de déclaration d'Intent Filter dans AndroidManifest.xml pour traiter le schéma myapp sur une Activity. La combinaison de action et category est obligatoire pour un routage correct des deep links.

xml
<activity android:name=".MainActivity">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category
            android:name="android.intent.category.DEFAULT" />
        <category
            android:name="android.intent.category.BROWSABLE" />
        <data
            android:scheme="myapp"
            android:host="profile"
            android:pathPrefix="/user" />
    </intent-filter>
</activity>

Après avoir configuré le filtre dans l'Activity, il faut appeler intent.getData() pour obtenir l'URI. Il est important de vérifier intent et les données pour null, car l'Activity peut être lancée sans deep link entrant, par exemple lors d'un démarrage standard depuis le lanceur.

Passage de paramètres via URL Scheme

Les paramètres de requête dans URL Scheme sont passés après le point d'interrogation au format clé=valeur, séparés par une esperluette. Ce format est identique aux requêtes HTTP et est facilement traité par les outils standard de la plateforme. Les paramètres doivent être encodés à l'aide d'un encodage en pourcentage pour tous les caractères ne faisant pas partie de l'ensemble autorisé des caractères URI.

Exemple d'un lien complet avec paramètres : myapp://profile?userId=42&source=email&ref=abc123. Après extraction de l'URL, l'application analyse séquentiellement tous les query-items et en fonction de leurs valeurs prend une décision de navigation vers l'écran cible.

Limitation de longueur de l'URI

Lors du passage de données complexes, il est important de considérer la limitation de longueur de l'URI. Sous iOS, la longueur maximale d'URL Scheme est limitée à 2 Ko, après quoi le système tronque le lien. Sous Android, la limite est d'environ 8 Ko, mais la valeur exacte dépend de la version du système d'exploitation et du fabricant de l'appareil. Pour de grands volumes de données, il est recommandé de passer uniquement un identifiant de session via URL Scheme et de charger le reste des données depuis le serveur.

Limitations et alternatives d'URL Scheme

Le principal inconvénient d'URL Scheme est l'incapacité de traiter un lien si l'application n'est pas installée sur l'appareil. Le navigateur affiche une erreur et l'utilisateur perd le contexte de navigation. Pour résoudre ce problème, Apple a introduit Universal Links dans iOS 9 et Google a introduit App Links dans Android 6. Les deux mécanismes sont enregistrés via un domaine web associé à l'application.

Universal Links et App Links fonctionnent comme des liens HTTPS normaux, mais lorsque l'application est installée, ils l'ouvrent sans boîte de dialogue de sélection. Si l'application n'est pas installée, le lien ouvre une page web sur le même domaine, préservant l'expérience utilisateur. Cela en fait l'alternative préférée pour les environnements de production.

Mécanismes de fallback

Pour URL Scheme sur iOS et Android, il n'existe pas de mécanisme de fallback intégré. Les développeurs utilisent des solutions intermédiaires sur serveur : le lien mène à une page web qui vérifie si l'application est installée via JavaScript et redirige soit vers le schéma, soit vers la boutique d'applications. Firebase Dynamic Links et Branch.io offrent des solutions prêtes à l'emploi pour ce problème avec prise en charge des deferred deep links qui déterminent automatiquement le statut d'installation et acheminent l'utilisateur sans nécessiter le développement d'un pipeline serveur personnalisé.

Une complexité supplémentaire survient lors de l'utilisation d'URL Scheme sur iOS 15+ et Android 12+, où les règles de confidentialité ont été renforcées. Safari bloque les tentatives d'ouverture d'un schéma non enregistré sans confirmation préalable, et Android 12 limite la visibilité des applications installées via PackageManager. Ces changements rendent l'utilisation d'URL Scheme pour la communication inter-applications moins fiable que dans les versions antérieures des plateformes.

Foire aux questions

Quelle est la différence entre URL Scheme et Universal Links ?

URL Scheme utilise un protocole personnalisé sans chiffrement, tandis que Universal Links fonctionnent via HTTPS avec vérification de domaine. Universal Links n'affichent pas de boîte de dialogue de sélection d'application et sont traités correctement lorsque l'application n'est pas installée sur l'appareil.

URL Scheme peut-il contenir des caractères cyrilliques ?

Oui, mais tous les caractères non ASCII doivent être encodés à l'aide de l'encodage en pourcentage selon la RFC 3986. Il est recommandé d'éviter le cyrillique dans URL Scheme pour garantir la compatibilité avec les anciennes versions du système d'exploitation et les navigateurs.

Combien d'URL Schemes une application peut-elle enregistrer ?

Il n'y a pas de limite sur le nombre de schémas ni dans iOS ni dans Android. En pratique, les applications utilisent entre un et cinq schémas. Par exemple, Telegram enregistre les schémas tg://, t.me/, telegram:// et telegram.me://.

Comment vérifier si un appareil prend en charge mon URL Scheme ?

Sous iOS, la méthode canOpenURL(_:) est utilisée, qui retourne true si le schéma est enregistré. Sous Android, la vérification s'effectue via PackageManager.queryIntentActivities(). Les deux plateformes exigent que le schéma soit pré-spécifié dans la configuration.

Peut-on passer des mots de passe via URL Scheme ?

Non, URL Scheme ne chiffre pas les données. Toute application enregistrant le même schéma peut intercepter le lien. Pour la sécurité, utilisez des Universal Links avec HTTPS ou un chiffrement de bout en bout au niveau du protocole.

Résumé

  • URL Scheme — un protocole URI personnalisé pour l'interaction entre applications sur les plateformes mobiles selon la norme RFC 3986.
  • Enregistrement du schéma s'effectue dans Info.plist pour iOS et dans AndroidManifest.xml pour Android via le mécanisme Intent Filter.
  • Traitement d'un lien entrant sur iOS s'effectue via le délégué de l'application, sur Android — via intent.getData() dans l'Activity cible.
  • Paramètres sont passés via query string avec encodage en pourcentage et une limite de longueur allant jusqu'à 2 Ko sur iOS.
  • Limitation — URL Scheme ne fonctionne pas lorsque l'application n'est pas installée ; Universal Links ou App Links sont nécessaires pour un fallback approprié.
  • Alternatives — Universal Links (iOS), App Links (Android) et les plateformes commerciales Firebase Dynamic Links et Branch.io.
  • Sécurité — URL Scheme ne chiffre pas les données, il n'est donc pas adapté à la transmission d'informations confidentielles.

Nous développerons une application mobile clé en main

IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.

Discuter du projet

Lisez aussi