Universal Link — was es ist, Funktionsweise und Einrichtung

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

Universal Link ist ein Apple-Mechanismus (iOS 9+), der es ermöglicht, Weblinks direkt in der App zu öffnen, ohne Safari zu durchlaufen. Wenn die App nicht installiert ist, wird der Link nahtlos im Browser geöffnet. Der Begriff wurde 2015 auf der WWDC von Apple als Teil von Handoff und des Continuity-Ökosystems eingeführt. Laut Apple Developer bietet Universal Link ein einheitliches Benutzererlebnis zwischen Web und nativer App ohne Auswahldialoge.

Wichtige Punkte

  • Universal Link — ein standardmäßiger https-Link, der die App (iOS 9+) oder die Website (Fallback) öffnet
  • apple-app-site-association — eine JSON-Datei auf dem Server, die die Zuordnung der Domain zur App bestätigt
  • Sicherheit — nur der Domaininhaber kann Links zuordnen, was das Abfangen von Schemata ausschließt
  • Einheitliche URL — ein Link funktioniert sowohl als Webseite als auch als Einstieg in die App
  • Handoff und Spotlight — Universal Link integriert sich in die Apple-Suche und die Geräteübergreifende Kontinuität

Universal Link ist ein standardmäßiger HTTPS-Link wie https://example.com/page, der beim Antippen auf einem iOS-Gerät die installierte App anstelle von Safari öffnet. Der Hauptunterschied zu Custom URL Scheme: Universal Link erfordert keine Registrierung eines benutzerdefinierten Schemas (myapp://) — es verwendet eine normale Domain. Dies beseitigt das Problem des URL-Scheme-Hijacking, bei dem jede App dasselbe Schema registrieren kann.

Apple stellte Universal Link auf der WWDC 2015 als Teil von iOS 9 vor. Der Mechanismus wurde Teil des Handoff- und Spotlight-Ökosystems: Universal Link funktioniert nicht nur im Browser, sondern auch in Spotlight-Suchergebnissen, Mail, Messages und anderen System-Apps. Darüber hinaus wird Universal Link unter watchOS und macOS unterstützt — der Benutzer kann eine App auf dem iPhone über einen Link auf dem Mac öffnen.

Der Hauptvorteil: Einheitliche URL. Der Entwickler verwaltet nicht zwei verschiedene Links (einen für das Web, einen für die App). Universal Link ist ein und derselbe https-Link. Wenn die App installiert ist, wird die App geöffnet. Wenn nicht, wird derselbe Link in Safari als normale Webseite geöffnet. Dies bietet einen idealen Fallback ohne Traffic-Verlust.

Der Universal-Link-Mechanismus besteht aus drei Phasen: Zuordnungsprüfung, Link-Verarbeitung und Browser-Fallback. Jede Phase ist für den korrekten Betrieb entscheidend. Wenn die Zuordnung nicht konfiguriert ist, behandelt iOS den Link als normale Weiterleitung zu Safari. Betrachten wir jede Phase im Detail.

Zuordnungsprüfung (Association Verification)

Beim ersten Antippen eines Links lädt iOS die Datei apple-app-site-association vom Server unter https://example.com/.well-known/apple-app-site-association herunter. Die Datei enthält JSON mit der Team-ID und Bundle-ID der App sowie eine Liste von Pfaden, die die App öffnen soll. iOS speichert diese Datei zwischen und überprüft regelmäßig ihre Aktualität (bei App-Update, Geräteneustart).

Die JSON-Datei apple-app-site-association muss über HTTPS ohne Weiterleitungen zugänglich sein. Der Server muss Content-Type: application/json zurückgeben. Wichtig: Die Datei hat keine .json-Erweiterung — iOS sucht sie strikt unter /.well-known/apple-app-site-association. Apple empfiehlt außerdem, die Universal-Link-Unterstützung im CDN hinzuzufügen und zu überprüfen, ob die Datei nicht durch robots.txt blockiert wird.

json
// apple-app-site-association — minimale Konfiguration
{
    "applinks": {
        "apps": [],
        "details": [
            {
                "appID": "TEAMID.com.example.app",
                "paths": ["/product/*", "/profile/*", "/search"]
            }
        ]
    }
}

appID wird als Team-ID + Bundle-ID (TEAMID.com.example.app) gebildet. paths ist ein Array von URL-Mustern, die die App verarbeiten soll. Es können *, ? und die NOT-Notation verwendet werden: ["NOT /admin/*", "/product/*"]. Die Pfade werden in der Reihenfolge der Aufzählung überprüft: Der erste Treffer bestimmt das Verhalten. Wenn der Pfad nicht übereinstimmt, wird der Link in Safari geöffnet.

Link-Verarbeitung (Link Handling)

Nach erfolgreicher Zuordnungsprüfung übergibt iOS den Link an die App. Die Verarbeitung erfolgt im AppDelegate über die Methode application(_:continue:restorationHandler:) für NSUserActivity oder im SceneDelegate über scene(_:continue:). Der Entwickler erhält ein NSUserActivity-Objekt vom Typ NSUserActivityTypeBrowsingWeb, extrahiert die URL und navigiert zum entsprechenden Bildschirm.

swift
// Universal-Link-Verarbeitung in AppDelegate
func application(
    _ application: UIApplication,
    continue userActivity: NSUserActivity,
    restorationHandler: @escaping UIUserActivityRestorationHandler
) -> Bool {
    guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
          let url = userActivity.webpageURL
    else { return false }

    // Navigation zum Bildschirm gemäß URL
    DeepLinkRouter.navigate(to: url)
    return true
}

DeepLinkRouter im obigen Beispiel ist eine benutzerdefinierte Klasse, die die URL parst und den entsprechenden Navigationskoordinator aufruft. Für SwiftUI erfolgt die Verarbeitung über die onOpenURL-Methode oder den environment(\.openURL)-Modifikator. Es ist wichtig, nicht nur den Vordergrundstart zu behandeln, sondern auch den Fall, dass die App nicht ausgeführt wurde (Kaltstart): In diesem Fall öffnet Universal Link die App über Startoptionen.

Browser-Fallback (Browser Fallback)

Wenn die App nicht installiert ist, öffnet iOS automatisch den Universal Link in Safari. Dies ist ein Hauptunterschied zu Custom URL Scheme: Der Benutzer sieht keinen Fehler. Der Fallback ist die standardmäßige Webseite derselben Domain. Der Entwickler kann auf dieser Seite einen App-Store-Link, Produktinformationen oder alternativen Inhalt platzieren.

Wichtig: Der Fallback kann auf iOS-Ebene nicht angepasst werden. iOS öffnet einfach die URL in Safari. Um unterschiedliche Inhalte für Benutzer mit und ohne installierte App anzuzeigen, verwenden Sie das Smart App Banner (ein Meta-Tag für Safari, das das Öffnen der App vorschlägt) oder die JavaScript-Installationserkennung. Apple bietet auch SKAdNetwork für die Installationsattribuierung über Universal Link.

Universal Link und der traditionelle Deep Link (Custom URL Scheme) lösen dasselbe Problem, unterscheiden sich jedoch grundlegend in Architektur und Sicherheit. Custom URL Scheme ist ein benutzerdefiniertes Protokoll (myapp://), das in Info.plist registriert wird. Jede App kann dasselbe Schema (myapp://) registrieren, und iOS kann nicht bestimmen, welche die „echte“ ist. Dies wird als URL-Scheme-Hijacking bezeichnet.

Universal Link löst das Hijacking-Problem durch Domain-Überprüfung. Nur der Domaininhaber kann apple-app-site-association auf seinem Server platzieren und so die Verbindung zu einer bestimmten Bundle-ID bestätigen. Zwei Apps können nicht denselben Universal Link registrieren: Bei einem Konflikt gibt iOS der zuletzt installierten App Vorrang oder öffnet Safari.

Ein weiterer Unterschied: Fallback. Custom URL Scheme hat keinen Fallback — wenn die App nicht installiert ist, zeigt der Browser einen Fehler an. Universal Link öffnet die Website. Eine einheitliche URL bedeutet, dass der SEO-Wert des Links erhalten bleibt (Google indexiert den Link) und ein Benutzer mit jedem Gerät relevante Inhalte erhält. Universal Link ist ein evolutionärer Schritt vom Deep Link zum Unified Link.

EigenschaftCustom URL SchemeUniversal Link
Formatmyapp://pathhttps://domain/path
ÜberprüfungKeineapple-app-site-association
SicherheitAnfällig für HijackingNur Domaininhaber
FallbackFehlerWebsite in Safari
iOS-VersioniOS 3+iOS 9+

Die Einrichtung von Universal Link umfasst einen Server- und einen Clientteil. Der Serverteil — Platzieren der Datei apple-app-site-association unter https://domain/.well-known/apple-app-site-association. Der Clientteil — Registrieren der Domain in Associated Domains in Xcode (Capabilities → Associated Domains → applinks:example.com). Danach empfängt die App automatisch alle Universal Links für die angegebene Domain.

Einrichtungsschritte:

  1. Erstellen Sie apple-app-site-association mit der richtigen appID (TeamID.BundleID) und paths
  2. Platzieren Sie die Datei auf dem Server unter /.well-known/ ohne .json-Erweiterung
  3. Überprüfen Sie die Verfügbarkeit: curl https://domain/.well-known/apple-app-site-association
  4. Hinzufügen der Domain in Associated Domains (Xcode Capabilities)
  5. Implementieren der Verarbeitung über NSUserActivity (AppDelegate oder SceneDelegate)
  6. Testen auf einem echten Gerät (der Simulator überprüft die Zuordnung nicht)

Das Debugging von Universal Link ist ein häufiges Problem für iOS-Entwickler. Hauptursachen für nicht funktionierende Links: apple-app-site-association-Datei nicht über HTTPS erreichbar, falsche appID, Content-Type nicht application/json, Weiterleitung vom /.well-known-Pfad, Zwischenspeicherung der alten Version (Zurücksetzen über Settings → Developer → Associated Domains Development). Apple stellt das Validation Checker-Tool in der Apple Developer Console zum Testen der Zuordnung bereit.

Branch und andere MMP-Plattformen vereinfachen die Einrichtung von Universal Link: Sie generieren apple-app-site-association automatisch und hosten es auf ihrer eigenen Domain. Der Entwickler muss nur die Branch-Domain zu Associated Domains hinzufügen und das SDK integrieren. Dies ist besonders praktisch für Startups, die keine eigene Serverinfrastruktur zum Hosten der AASA-Datei haben.

Einschränkungen und Kompatibilität

Universal Link hat mehrere Einschränkungen. Erstens: Die Datei apple-app-site-association muss strikt über HTTPS erreichbar sein (HTTP wird nicht unterstützt). Zweitens: Der Link muss auf dieselbe Domain verweisen, die in Associated Domains angegeben ist. Domainübergreifende Universal Links funktionieren nicht — jede Domain erfordert einen separaten Eintrag in Capabilities und eine separate AASA-Datei. Drittens: Universal Link funktioniert nicht in WKWebView — nur in Safari und Systemkomponenten.

Kompatibilität: iOS 9.0+ (Universal Link), watchOS 6.0+ (Handoff Universal Link), macOS 10.15+ (Catalyst und Mac-Apps). Auf älteren iOS-Versionen wird der Link in Safari geöffnet. Das bedeutet, dass auf iOS 8 (weniger als 1% der Geräte) Universal Link nicht funktioniert. Es wird empfohlen, auch Custom URL Scheme als Fallback für ältere Geräte zu unterstützen, wenn Ihre Zielgruppe Benutzer mit veralteten Versionen umfasst.

Änderungen unter iOS 16+: Apple hat die Universal-Link-Verarbeitung für SwiftUI verbessert. Ein neuer environment(\.openURL)-Modifikator mit verzögerter Verarbeitungsmöglichkeit wurde eingeführt. iOS 16 erlaubt auch das Öffnen von Universal Links in der App über SFSafariViewController. Für iOS 16-Benutzer wird empfohlen, vollständig auf die SwiftUI-Universal-Link-Verarbeitung umzusteigen und den AppDelegate-Code nur für die Abwärtskompatibilität zu behalten.

Häufig gestellte Fragen

Wie unterscheidet sich Universal Link von Custom URL Scheme?

Universal Link verwendet eine standardmäßige HTTPS-URL und wird über eine Datei auf dem Server verifiziert. Custom URL Scheme verwendet ein benutzerdefiniertes Protokoll (myapp://) ohne Verifizierung, was es anfällig für das Abfangen durch eine andere App macht, die dasselbe Schema registriert hat.

Wo soll apple-app-site-association platziert werden?

Die Datei wird im Stammverzeichnis des HTTPS-Servers unter /.well-known/apple-app-site-association (ohne .json-Erweiterung) platziert. Der Server muss Content-Type: application/json zurückgeben. Wichtig: Keine Weiterleitungen, die Datei muss direkt erreichbar sein.

Warum öffnet Universal Link die App nicht?

Hauptursachen: Falsche Team-ID oder Bundle-ID in der AASA-Datei, Datei nicht über HTTPS erreichbar, Weiterleitung, falscher Content-Type, Zwischenspeicherung einer alten Version. Überprüfen Sie über Developer → Associated Domains Development und setzen Sie den Cache durch Neustarten des Geräts zurück.

Kann ich Universal Link ohne Website verwenden?

Nein — Universal Link erfordert einen HTTPS-Server, der apple-app-site-association hostet. Ohne Domain funktioniert Universal Link nicht. Alternativen: Custom URL Scheme (weniger sicher) oder Drittanbieterdienste (Branch, Firebase) mit eigener Domain.

Funktioniert Universal Link auf Android?

Nein — Universal Link ist eine exklusive Apple-Technologie für iOS, iPadOS, watchOS und macOS. Auf Android heißt das Äquivalent App Link (Android 6.0+), das Digital Asset Links (assetlinks.json) anstelle von apple-app-site-association verwendet.

Zusammenfassung

  • Universal Link — ein https-Link, der die App auf iOS 9+ oder die Website in Safari als Fallback öffnet
  • apple-app-site-association — eine JSON-Datei auf dem Server, die die Zuordnung der Domain zur App überprüft
  • Sicherheit — im Gegensatz zu Custom URL Scheme ist Universal Link vor dem Abfangen durch Drittanbieter-Apps geschützt
  • Einheitliche URL — ein Link funktioniert für Benutzer mit und ohne installierte App
  • Handoff und Spotlight — Universal Link integriert sich in das Apple Continuity-Ökosystem
  • Einrichtung umfasst Serverteil (AASA-Datei) und Clientteil (Associated Domains + NSUserActivity)
  • Testen nur auf einem echten Gerät — der Simulator überprüft die Domainzuordnung nicht

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