Deep Linking ist eine leistungsstarke Technik, die es mobilen Apps ermöglicht, sich direkt zu bestimmten Inhalten oder Seiten innerhalb der App zu öffnen. Auf iOS-Geräten wird dies durch die Verwendung von URL-Schemata erreicht, die benutzerdefinierte URLs sind, die bestimmte Aktionen in einer App auslösen. In Kombination mit einem Headless-CMS wie Directus können Sie den Inhalt dynamisch verwalten, auf den diese Deep Links verweisen, was eine skalierbare, inhaltsgesteuerte mobile Erfahrung ermöglicht. Zu verstehen, wie man das iOS-URL-Schema implementiert und nutzt, kann die Benutzererfahrung verbessern, indem es eine nahtlose Navigation zwischen Webseiten und mobilen Anwendungen bietet, während der Inhalt zentralisiert und editierbar bleibt Directus.

Was ist das iOS URL Schema?

Das iOS-URL-Schema ist ein Protokoll, das es Apps ermöglicht, miteinander über benutzerdefinierte URLs zu kommunizieren. Jede App kann ein oder mehrere benutzerdefinierte URL-Schema (z. B. , ) in ihrer -Datei registrieren. Wenn das System auf einen Link trifft, der mit einem dieser Schemata beginnt, startet es die entsprechende App und übergibt die vollständige URL an sie. Dies ermöglicht es der App, nicht nur zu öffnen, sondern auch zu einem bestimmten Ziel zu navigieren, basierend auf dem Pfad und den Parametern der URL.

Zum Beispiel kann das bekannte Schema Benutzer direkt zu einem Tweet, einem Benutzerprofil oder dem Compose-Bildschirm führen, abhängig vom angehängten Pfad. Ebenso kann die Uber-App mit einem vorab ausgefüllten Ziel öffnen. Dieses direkte Verhalten macht URL-Schemata für App-Entwickler so wertvoll, die Reibung reduzieren und das Engagement erhöhen wollen.

Aus technischer Sicht verwenden URL-Schemata die gleichen Strukturelemente wie Web-URLs: ein Schema, ein Host, ein optionaler Pfad und Abfrageparameter. Der Hauptunterschied besteht darin, dass das Schema nicht oder ist, sondern ein benutzerdefinierter String, der von der App registriert wird.

Wie Deep Linking mit URL-Schemata funktioniert

Eine tiefe Verknüpfung mit iOS-URL-Schemata beinhaltet die Erstellung einer URL, die der App genau sagt, wohin sie gehen soll.

  • Scheme: The custom protocol identifier (e.g., )
  • Host: Ein domänenähnlicher String, der den Zielbereich identifiziert (z. B. , )
  • Pfad: Eine oder mehrere Pfadkomponenten, um die genaue Ressource anzugeben (z. B. )
  • Parameter: Abfrage von Schlüssel-Wert-Paaren, die zusätzlichen Kontext passieren (z. B. )

Wenn ein Benutzer einen solchen Link auf einem iOS-Gerät anklickt, prüft das System, ob eine installierte App das Schema registriert hat. Wenn ja, startet es die App und übergibt die URL an die Delegate-Methode der App. Die App analysiert dann die URL und navigiert zur entsprechenden Ansicht oder zum Bildschirm. Wenn keine App registriert ist, kann das System auf den Standard-Webbrowser zurückgreifen, aber nur, wenn der Link einen universellen Link verwendet (mehr dazu später).

Damit Deep Linking zuverlässig funktioniert, müssen Entwickler sicherstellen, dass die URL-Struktur sowohl im Webinhalt, der die Links hostet, als auch in der Routing-Logik der App konsistent ist. Hier kann ein Content-Management-System wie Directus helfen, indem es die kanonischen URLs oder IDs speichert, die die Navigation der App steuern.

Apple hat Universal Links in iOS 9 als sicherere und nahtlose Alternative zu benutzerdefinierten URL-Schemata eingeführt. Universal Links verwenden Standard-HTTPS-URLs (z. B. [[FLT: 12]]) und erfordern eine serverseitige Validierung über eine [[FLT: 13]] Datei. Wenn ein Benutzer auf einen Universal Link tippt, überprüft iOS die Datei, öffnet die App direkt, wenn sie installiert ist, und lässt keine Browserumleitung. Wenn die App nicht installiert ist, öffnet sich der Link in Safari als normale Website.

Benutzerdefinierte URL-Schemata haben dagegen einige Nachteile: Sie können mit anderen Apps in Konflikt geraten (zwei Apps könnten dasselbe Schema registrieren), sie greifen nicht anmutig zurück (das System zeigt einen Fehler, wenn die App fehlt), und sie können von bösartigen Apps entführt werden. Trotz dieser Einschränkungen sind benutzerdefinierte URL-Schemata immer noch weit verbreitet, insbesondere für Deep Links innerhalb einer einzigen App oder für die Inter-App-Kommunikation, wenn Universal Links nicht unterstützt werden.

Für Produktions-Apps empfiehlt Apple die Verwendung von Universal Links als primären Deep-Linking-Mechanismus und die Rückgriff auf benutzerdefinierte URL-Schemata für Legacy-Support oder spezifische Anwendungsfälle. Viele moderne Apps, einschließlich der mit Directus integrierten, implementieren beide, um maximale Kompatibilität zwischen iOS-Versionen und Benutzerpräferenzen zu gewährleisten.

Directus ist ein Headless-CMS, das eine flexible API für die Verwaltung von Inhalten bietet. Beim Erstellen einer iOS-App, die Deep-Linking verwendet, können Sie Directus nutzen, um die Zuordnungen zwischen URL-Pfaden und Inhaltselementen zu speichern. Zum Beispiel kann jeder Artikel oder jedes Produkt in Directus ein - oder -Feld haben, das Teil der Deep-Link-URL wird. Dadurch bleibt die Linkstruktur konsistent und editierbar, ohne dass ein App-Update erforderlich ist.

So funktioniert eine typische Integration:

  1. Definiere Inhaltssammlungen in Directus (z.B. , ).
  2. Hinzufügen von Feldern wie , , – die Slug wird oft im Deep Link Pfad verwendet.
  3. Erstelle die Deep Link URL dynamisch auf dem Web-Front-End oder Server mit der Directus API, um den Slug des Elements abzurufen.
  4. Registrieren Sie das URL-Schema in der iOS-App (z. B. ).
  5. Präsen Sie den Link innerhalb der App und rufen Sie die Directus API auf, um den vollständigen Inhalt für den angegebenen Slug abzurufen.

Dieses Muster stellt sicher, dass, wenn ein Content-Editor einen Artikel in Directus aktualisiert, der Deep-Link automatisch auf die neueste Version verweist – keine fest codierten Pfade erforderlich.

Angenommen, Sie haben eine Directus-Sammlung mit einem Feld Beim Erstellen einer Webseite, die mit der iOS-App verknüpft ist, würden Sie ein Anker-Tag generieren wie:

<a href="directusapp://article/how-to-deep-link">Read in App</a>

Innerhalb der iOS-App, nachdem Sie die URL erhalten haben, würden Sie den Slug extrahieren und eine GET-Anfrage an folgendes stellen:

https://your-directus-project.example.com/items/articles?filter[slug][_eq]=how-to-deep-link

Die API-Antwort enthält die vollständigen Artikeldaten, die Sie dann zur Belegung der Ansicht verwenden. Dies entkoppelt die App von fest codierten Inhalten und macht den Deep Link wirklich dynamisch.

Directus unterstützt auch relationale Felder, sodass Sie eine tiefe Verknüpfung mit dem Profil eines bestimmten Benutzers oder einer verwandten Sammlung herstellen können.

Wenn Sie Deep Links von Ihrem Web-Front-End erzeugen, haben Sie normalerweise zwei Möglichkeiten: Erstellen Sie die URLs manuell mit dem benutzerdefinierten Schema der App oder verwenden Sie Universal Links. Bei Universal Links ist die URL einfach die öffentliche Website-URL (z. B. [[FLT: 29]]). Das iOS-System übernimmt automatisch die Umleitung basierend auf der -Datei. Dies wird oft bevorzugt, weil es funktioniert, auch wenn der Benutzer die App nicht hat, und es vermeidet den Fehler “Kann keine Seite öffnen”, den benutzerdefinierte Schemata auslösen.

Um Universal Links mit Directus zu implementieren, müssen Sie:

  • Hosten Sie die JSON-Datei am Stamm Ihrer Domain (z. B. ).
  • Stellen Sie sicher, dass Ihre Directus API und Ihr Web-Frontend auf derselben Domain ausgeführt werden, oder richten Sie die Assoziationsdatei auf der Web-Domain ein.
  • Aktivieren Sie in der iOS-App „Verbindliche Domains im Tab Funktionen von Xcode und fügen Sie die Domain hinzu (z. B. .
  • Behandeln Sie eingehende Universallinks in der -Delegationsmethode.

Durch die Verwendung von Universal Links erhalten Sie eine robuste, sichere Deep-Linking-Erfahrung, die den Kontext des Benutzers respektiert. Directus' Flexibilität bedeutet, dass Sie den Inhalt für diese Links zentral verwalten, Slugs, Titel aktualisieren oder sogar alte Links zu neuen Inhalten umleiten können, ohne die App zu berühren.

Implementieren von benutzerdefinierten URL-Schemata in Ihrer iOS App

Um mit benutzerdefinierten URL-Schemata in einem Xcode-Projekt zu beginnen, öffnen Sie die Ihrer App und fügen Sie einen Schlüssel mit der Bezeichnung hinzu.

Als nächstes implementieren Sie die Methode in Ihrem (oder das SwiftUI Lifecycle-Äquivalent). Diese Methode erhält die URL und Sie können ihre Komponenten analysieren.

func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
 let scheme = url.scheme // "directusapp"
 let host = url.host // "article"
 let path = url.path // "/how-to-deep-link"
 let params = url.queryParameters // ["ref": "campaign"]

 // Handle routing based on host and path
 if host == "article" {
 let slug = path.dropFirst() // remove leading "/"
 navigateToArticle(withSlug: String(slug))
 } else if host == "product" {
 // ...
 }
 return true
}

Dieses Code-Snippet geht davon aus, dass Sie eine Erweiterung zum Extrahieren von Abfrageparametern als Wörterbuch haben. Mit dem extrahierten Slug können Sie Ihren Directus API-Client anrufen, um das Inhaltselement abzurufen und den entsprechenden View-Controller zu drücken.

Umgang mit Fallbacks Gracefully

Da benutzerdefinierte URL-Schemata kein eingebautes Fallback bieten, müssen Sie eines manuell implementieren. Ein üblicher Ansatz ist die Verwendung einer JavaScript-Weiterleitung oder einer serverseitigen Überprüfung. Zum Beispiel können Sie auf Ihrer Website das Gerät des Benutzers erkennen und versuchen, den benutzerdefinierten Schemalink zu öffnen. Wenn es fehlschlägt (d. H. Die App ist nicht installiert), können Sie den Benutzer zum App Store oder zu einer mobilen Webversion des Inhalts umleiten.

Eine Technik ist, den -Trick mit einem Timer zu verwenden:

<script>
 window.location = "directusapp://article/how-to-deep-link";
 setTimeout(function() {
 window.location = "https://apps.apple.com/your-app-id";
 }, 500);
</script>

Dies funktioniert auf vielen Geräten, kann aber unzuverlässig sein, wenn die App langsam geöffnet wird. Eine robustere Methode ist die Verwendung des -Ansatzes für iOS oder die Integration eines Deep-Linking-Dienstes von Drittanbietern wie Branch oder Firebase Dynamic Links. Bei der Verwendung von Directus können Sie die App Store-URL auch in einer Systemsammlung speichern und dynamisch abrufen für den Fallback.

Best Practices für Deep Linking in Directus-Powered Apps

Um ein produktionsfähiges Deep Linking System mit Directus zu erstellen, befolgen Sie diese Richtlinien:

  • Behalte URLs für Menschen lesbar. Verwende, wenn möglich, Slugs anstelle von undurchsichtigen IDs. ist aussagekräftiger als . Slugs können von Directus mit Hooks oder Extensions generiert werden.
  • Immer ein Fallback bereitstellen. Für benutzerdefinierte URL-Schemata ist ein Fallback zur Webversion oder zum App Store unerlässlich.
  • Verwende Analysen. Verfolgen Sie tiefe Links, die in Directus geöffnet werden, indem Sie die URL protokollieren oder eine dedizierte Sammlung verwenden, um aufzuzeichnen, welche Links angezapft werden. Dies hilft Content-Teams, das Engagement zu verstehen.
  • Test auf realen Geräten. Simulatortests können das Verhalten von Universal Link nicht vollständig replizieren.
  • Sichern Sie Ihr Schema. Verwenden Sie universelle Links über benutzerdefinierte Schemata, wenn möglich, um das Besetzen von Schemata zu verhindern.
  • Handle Edge Cases. Wenn die Directus API einen Fehler zurückgibt (z. B. der Slug existiert nicht mehr), zeigen Sie einen freundlichen Fehlerbildschirm an oder leiten Sie ihn zu einem Startbildschirm innerhalb der App um.

Durch die Einhaltung dieser Praktiken stellen Sie sicher, dass Benutzer, die einen tiefen Link tippen, eine reibungslose Erfahrung haben, unabhängig davon, ob sie die App installiert haben oder nicht.

Das Debuggen von Deep Links kann schwierig sein, weil das System häufig Assoziationsdateien zwischenspeichert oder stillschweigend ausfällt.

  • Verwende das Konsolenprotokoll. Setze in Xcode einen Haltepunkt in deinen Delegiertenmethoden oder füge hinzu, um zu sehen, welche URLs übergeben werden.
  • Simulieren Sie Links von Safari. Sie können benutzerdefinierte URL-Schemata testen, indem Sie direkt in die Adressleiste von Safari eingeben.
  • Validieren Sie Ihre Apple-App-Site-Assoziationsdatei. Apple stellt ein Tool in der Apple Developer-Konsole zur Verfügung, um die Datei zu überprüfen. Sie können auch Online-Validatoren wie Branchs AASA Validator verwenden.
  • Überprüfe die Server-Logs. Wenn Du Directus als Backend verwendest, stelle sicher, dass Dein API-Endpunkt zum Abrufen von Inhalten erreichbar ist und die erwarteten Daten zurückgibt.
  • Reset den Geräte-Cache. iOS speichert die Assoziationsdatei aggressiv zwischen. Sie können eine Aktualisierung erzwingen, indem Sie das Gerät neu starten oder den Flugzeugmodus umschalten.

Erstellen Sie für einen gründlichen Test eine Checkliste, die sowohl installierte als auch deinstallierte App-Szenarien, verschiedene iOS-Versionen und verschiedene Linkformate (mit und ohne Parameter) abdeckt.

Schlussfolgerung

Durch die Kombination von iOS-URL-Schemata für Deep Linking mit einem Headless CMS wie Directus entsteht ein leistungsstarkes, flexibles System für die Bereitstellung von Inhalten direkt an die Benutzer in Ihrer mobilen App. Durch die Zentralisierung des Content-Managements in Directus können Sie Deep Link-Ziele aktualisieren, neue Pfade hinzufügen und das Engagement verfolgen, ohne die App jemals neu zu erstellen. Ob Sie benutzerdefinierte URL-Schemata oder Universal Links wählen - und idealerweise beides - das Ergebnis ist eine nahtlose Brücke zwischen Web- und Mobile-Erlebnissen. Beginnen Sie mit der Registrierung eines Schemas, dem Parsen eingehender URLs und der Verbindung mit Ihrer Directus-API. Durch sorgfältige Implementierung und Testen kann Deep Linking die Benutzerbindung und -konvertierung erheblich steigern, indem Sie die Schritte reduzieren, die zum Konsumieren Ihrer Inhalte erforderlich sind.

Für weitere Informationen lesen Sie Apples offizielle Dokumentation zu Deep Linking, die Directus CMS Dokumentation und dieses Radiowenderlich Tutorial zu Universal Links für schrittweise Implementierungsbeispiele.