URL Scheme: Was es ist, wie es funktioniert und in der Entwicklung verwendet wird

Autor: IT Sectr Veröffentlicht: 2026-05-14 Lesezeit: 8 Min.

URL Scheme — ist ein benutzerdefiniertes URI-Protokoll, das eine mobile App im Betriebssystem registriert, um über Links wie myapp://path geöffnet zu werden. Gemäß RFC 3986 definiert das URI-Schema die Syntax und Semantik aller nachfolgenden Adresskomponenten. Beim Navigieren zu einem solchen Link identifiziert das System die registrierte Anwendung anhand ihrer eindeutigen Kennung und startet sie mit den aus dem Link extrahierten Parametern. Deep Link auf Basis von URL Scheme bleibt der grundlegende Mechanismus der anwendungsübergreifenden Navigation auf mobilen Plattformen, trotz des Aufkommens modernerer Alternativen.

Wichtige Erkenntnisse

  • URL Scheme — ein benutzerdefiniertes Link-Protokoll wie myapp://path, das eine App registriert, um aus anderen Apps oder dem Browser geöffnet zu werden.
  • Syntax umfasst Schema, Host, Pfad und Query-Parameter gemäß RFC 3986-Standard und ermöglicht flexible Datenübertragung zwischen Anwendungen.
  • iOS verwendet CFBundleURLTypes in Info.plist und den AppDelegate-Delegaten zur Verarbeitung eingehender URL Schemes mit Navigationsparametern.
  • Android verwendet Intent Filter in AndroidManifest.xml mit Angabe von action, category und data, um Deep Links zur Ziel-Activity zu leiten.
  • Einschränkung — URL Scheme funktioniert nicht, wenn die App nicht installiert ist, was durch Universal Links auf iOS und App Links auf Android gelöst wird.

Was ist URL Scheme?

URL Scheme — ist eine eindeutige Protokollkennung, die eine App im Betriebssystem registriert, um Aufrufe über benutzerdefinierte Links zu empfangen. Wenn ein Benutzer auf einen Link wie myapp://profile/123 klickt, identifiziert das System die App, die das Schema myapp registriert hat, und übergibt die Kontrolle mit der vollständigen URI an sie. Dieser Mechanismus ermöglicht es Apps, Daten auszutauschen und sich gegenseitig zu öffnen, ohne dass eine Serverinfrastruktur erforderlich ist.

Das Konzept von URL Scheme ist direkt von den Webstandards RFC 3986 übernommen, wo das URI-Schema die erste Komponente eines universellen Ressourcenbezeichners ist. In der mobilen Entwicklung wird diese Idee für die anwendungsübergreifende Kommunikation angepasst, bei der anstelle eines HTTP-Servers die App selbst als Link-Handler fungiert.

Beispiele bekannter URL Schemes

Viele beliebte Apps registrieren eigene URL Schemes für die Integration mit Drittanbieterdiensten. Beispielsweise verwendet Spotify das Schema spotify://, Telegram verwendet tg:// und Instagram verwendet instagram://. Entwickler erstellen auch häufig Schemas wie appname:// für die interne Navigation und End-to-End-Tests von Bildschirmen.

URL Schemes werden immer noch häufig in Push-Benachrichtigungen, E-Mail-Newslettern und QR-Codes verwendet, wo eine sofortige Navigation zu einem bestimmten App-Bereich erforderlich ist. Ab iOS 9 und Android 6 sind jedoch alternative Mechanismen entstanden, die einfache Schemas zunehmend ergänzen und ersetzen.

URL Scheme-Syntax: Schema, Host und Pfad

Die Struktur einer benutzerdefinierten URI folgt der allgemeinen RFC 3986-Spezifikation und besteht aus mehreren Komponenten. Das Schema wird zuerst angegeben und durch einen Doppelpunkt vom Rest der Adresse getrennt. Nach dem Schema können Host, Port, Pfad, Query-Parameter und Fragment folgen, die jeweils optional sind.

Die vollständige Syntax sieht wie folgt aus: scheme://host/path?key=value#fragment. Das Schema ist das einzige obligatorische Element; der Rest wird durch die Anforderungen der jeweiligen Implementierung bestimmt. Der Doppelslash nach dem Schema ist historisch von HTTP übernommen und laut Spezifikation nicht streng erforderlich, wird aber universell als Konvention verwendet.

URI-Komponenten

Für eine visuelle Darstellung der URI-Struktur wird eine Komponententabelle verwendet. Jedes Element hat seinen Zweck und seine Verbindlichkeit.

KomponenteBeispielErforderlich
SchememyappJa
HostprofileNein
Path/user/42Nein
Query?id=42&tab=mainNein
Fragment#section2Nein

Entwickler können die URI-Struktur frei wählen, was Flexibilität schafft, aber Kompatibilitätsprobleme zwischen verschiedenen Versionen der App verursacht. Es wird empfohlen, das URL Scheme-Format als Teil der öffentlichen API der App zu dokumentieren und bei Änderungen zu versionieren.

Wie URL Scheme in iOS funktioniert

iOS erfordert die explizite Registrierung jedes URL Scheme in der Info.plist-Datei des Projekts. Der Entwickler fügt ein CFBundleURLTypes-Array hinzu, dessen jedes Element eine Kennung (CFBundleURLName) und eine Liste unterstützter Schemas (CFBundleURLSchemes) enthält. Nach der Registrierung leitet das System automatisch alle eingehenden Aufrufe auf registrierte Schemas an die App weiter.

Die Verarbeitung eines eingehenden URL Scheme erfolgt im App-Delegaten über die Methode application(_:open:options:). Diese Methode erhält ein URL-Objekt, aus dem Pfad und Query-Parameter für Navigationsentscheidungen extrahiert werden. Der Handler muss einen Bool-Wert zurückgeben, der den Erfolg der Operation angibt.

Verarbeitung im AppDelegate

Nachfolgend ein Beispiel für die Implementierung eines URL Scheme-Handlers in Swift. Der Code demonstriert die Extraktion von Host und Query-Parametern aus einer eingehenden URI mit 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
}

Die Methode verwendet URLComponents für die sichere Analyse der Query-Parameter. Dieser Ansatz ist der manuellen String-Analyse vorzuziehen, da er automatisch die Prozentkodierung und Dekodierung von Sonderzeichen in Parameterwerten handhabt.

Wie URL Scheme in Android funktioniert

Android verwendet das Intent Filter-System, um Deep Links basierend auf URL Scheme zu leiten. Der Entwickler deklariert einen Filter in AndroidManifest.xml innerhalb des Activity-Tags, das den Link verarbeiten soll. Der Filter enthält die VIEW-Aktion, die Kategorien BROWSABLE und DEFAULT sowie ein data-Tag mit Angabe von Schema, Host und pathPrefix.

Wenn ein Benutzer auf einen Link mit einem benutzerdefinierten Schema klickt, überprüft das System den Intent Filter aller installierten Apps. Werden mehrere übereinstimmende Apps gefunden, wird dem Benutzer ein Auswahldialog angezeigt. Die Kategorie BROWSABLE ermöglicht die Verarbeitung des Links aus dem Browser.

Intent Filter konfigurieren

Beispiel für die Deklaration eines Intent Filters in AndroidManifest.xml zur Verarbeitung des Schemas myapp auf einer Activity. Die Kombination von action und category ist für die korrekte Deep Link-Routing obligatorisch.

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>

Nach der Konfiguration des Filters in der Activity muss intent.getData() aufgerufen werden, um die URI zu erhalten. Es ist wichtig, intent und Daten auf null zu prüfen, da die Activity ohne eingehenden Deep Link gestartet werden kann, beispielsweise beim Standardstart aus dem Launcher.

Parameterübergabe via URL Scheme

Query-Parameter in URL Scheme werden nach dem Fragezeichen im Format Schlüssel=Wert, getrennt durch kaufmännisches Und, übergeben. Dieses Format ist identisch mit HTTP-Anfragen und wird problemlos von den Standardtools der Plattform verarbeitet. Parameter müssen für alle Zeichen, die nicht zum zulässigen URI-Zeichensatz gehören, mit Prozentkodierung kodiert werden.

Beispiel für einen vollständigen Link mit Parametern: myapp://profile?userId=42&source=email&ref=abc123. Nach dem Extrahieren der URL parst die App nacheinander alle Query-Items und trifft basierend auf deren Werten eine Navigationsentscheidung zum Zielbildschirm.

URI-Längenbegrenzung

Bei der Übergabe komplexer Daten ist die URI-Längenbegrenzung zu beachten. Unter iOS ist die maximale URL Scheme-Länge auf 2 KB begrenzt, danach kürzt das System den Link. Unter Android beträgt die Grenze etwa 8 KB, der genaue Wert hängt jedoch von der OS-Version und dem Gerätehersteller ab. Für große Datenmengen wird empfohlen, nur eine Sitzungskennung via URL Scheme zu übergeben und die restlichen Daten vom Server zu laden.

Einschränkungen und Alternativen von URL Scheme

Der Hauptnachteil von URL Scheme ist die Unfähigkeit, einen Link zu verarbeiten, wenn die App nicht auf dem Gerät installiert ist. Der Browser zeigt einen Fehler an und der Benutzer verliert den Navigationskontext. Zur Lösung dieses Problems führte Apple Universal Links in iOS 9 und Google App Links in Android 6 ein. Beide Mechanismen werden über eine mit der App verbundene Webdomäne registriert.

Universal Links und App Links funktionieren wie normale HTTPS-Links, öffnen aber bei installierter App diese ohne Auswahldialog. Ist die App nicht installiert, öffnet der Link eine Webseite auf derselben Domäne, wodurch die Benutzererfahrung erhalten bleibt. Dies macht sie zur bevorzugten Alternative für Produktionsumgebungen.

Fallback-Mechanismen

Für URL Scheme unter iOS und Android gibt es keinen integrierten Fallback-Mechanismus. Entwickler verwenden Zwischenserver-Lösungen: Der Link führt zu einer Webseite, die per JavaScript prüft, ob die App installiert ist, und entweder zum Schema oder zum App Store weiterleitet. Firebase Dynamic Links und Branch.io bieten fertige Lösungen für dieses Problem mit Unterstützung für deferred Deep Links, die automatisch den Installationsstatus ermitteln und den Benutzer leiten, ohne dass eine benutzerdefinierte Server-Pipeline entwickelt werden muss.

Zusätzliche Komplexität entsteht bei der Verwendung von URL Scheme unter iOS 15+ und Android 12+, wo die Datenschutzbestimmungen verschärft wurden. Safari blockiert Versuche, ein nicht registriertes Schema ohne vorherige Bestätigung zu öffnen, und Android 12 schränkt die Sichtbarkeit installierter Apps über PackageManager ein. Diese Änderungen machen die Verwendung von URL Scheme für die anwendungsübergreifende Kommunikation weniger zuverlässig als in früheren Plattformversionen.

Häufig gestellte Fragen

Was ist der Unterschied zwischen URL Scheme und Universal Links?

URL Scheme verwendet ein benutzerdefiniertes Protokoll ohne Verschlüsselung, während Universal Links über HTTPS mit Domain-Verifizierung funktionieren. Universal Links lösen keinen App-Auswahldialog aus und werden korrekt verarbeitet, wenn die App nicht auf dem Gerät installiert ist.

Kann URL Scheme kyrillische Zeichen enthalten?

Ja, aber alle Nicht-ASCII-Zeichen müssen gemäß RFC 3986 mit Prozentkodierung kodiert werden. Es wird empfohlen, kyrillische Zeichen in URL Scheme zu vermeiden, um die Kompatibilität mit älteren OS-Versionen und Browsern zu gewährleisten.

Wie viele URL Schemes kann eine App registrieren?

Es gibt keine Begrenzung der Anzahl von Schemas weder in iOS noch in Android. In der Praxis verwenden Apps ein bis fünf Schemas. Beispielsweise registriert Telegram die Schemas tg://, t.me/, telegram:// und telegram.me://.

Wie überprüfe ich, ob ein Gerät mein URL Scheme unterstützt?

In iOS wird die Methode canOpenURL(_:) verwendet, die true zurückgibt, wenn das Schema registriert ist. In Android erfolgt die Prüfung über PackageManager.queryIntentActivities(). Beide Plattformen erfordern die vorherige Angabe des Schemas in der Konfiguration.

Können Passwörter via URL Scheme übergeben werden?

Nein, URL Scheme verschlüsselt keine Daten. Jede App, die dasselbe Schema registriert, kann den Link abfangen. Verwenden Sie aus Sicherheitsgründen Universal Links mit HTTPS oder Ende-zu-Ende-Verschlüsselung auf Protokollebene.

Zusammenfassung

  • URL Scheme — ein benutzerdefiniertes URI-Protokoll für die anwendungsübergreifende Interaktion auf mobilen Plattformen nach RFC 3986-Standard.
  • Registrierung des Schemas erfolgt in Info.plist für iOS und in AndroidManifest.xml für Android über den Intent Filter-Mechanismus.
  • Verarbeitung eines eingehenden Links erfolgt in iOS über den App-Delegaten, in Android — über intent.getData() in der Ziel-Activity.
  • Parameter werden über Query-String mit Prozentkodierung und einer Längenbegrenzung von bis zu 2 KB unter iOS übergeben.
  • Einschränkung — URL Scheme funktioniert nicht, wenn die App nicht installiert ist; für ordnungsgemäßen Fallback sind Universal Links oder App Links erforderlich.
  • Alternativen — Universal Links (iOS), App Links (Android) und kommerzielle Plattformen Firebase Dynamic Links und Branch.io.
  • Sicherheit — URL Scheme verschlüsselt keine Daten und ist daher nicht für die Übertragung vertraulicher Informationen geeignet.

Wir entwickeln eine mobile Applikation schlüsselfertig

IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.

Projekt besprechen

Lesen Sie auch