Einleitung

Moderne mobile Nutzer erwarten sofortigen Zugriff auf Informationen. Die Integration der Systemsuche in Ihre iOS-App reduziert die Reibung drastisch und ermöglicht es Benutzern, Inhalte zu finden, ohne zuerst Ihre App zu öffnen. Die Core Spotlight API ist das integrierte Framework von Apple für die Indexierung von App-Inhalten in die globale Spotlight-Suche des Geräts. Wenn ein Benutzer vom Startbildschirm oder in der Suchansicht sucht, erscheinen die indizierten Elemente Ihrer App neben den Ergebnissen von Mail, Nachrichten und anderen Systemanwendungen. Dieser Artikel bietet eine umfassende, produktionsbereite Anleitung zur Implementierung von Core Spotlight, die alles abdeckt von grundlegender Indexierung bis hin zu Deep Linking und Performance Tuning.

Kern Spotlight und seine Vorteile zu verstehen

Core Spotlight ist ein leichtes, datenschutzfreundliches Indexierungssystem, das vollständig auf dem Gerät läuft – keine Daten verlassen das Telefon des Benutzers, es sei denn, Sie verwenden CloudKit explizit. Dies ist ideal für persönliche Inhalte wie Notizen, Kontakte, Dokumente oder benutzergenerierte Daten.

  • Erhöhte Interaktion – Nutzer entdecken Inhalte, die sie vielleicht vergessen haben, was die Wiederholnutzung erhöht.
  • Navigation ohne Naht – Wenn Sie auf ein Suchergebnis tippen, können Sie Ihre App direkt auf dem entsprechenden Bildschirm öffnen.
  • Offline-Fähigkeit – Indexierte Elemente bleiben auch ohne Internetverbindung durchsuchbar.
  • Geringe Implementierungskosten – Die API ist klein, gut dokumentiert und lässt sich problemlos in bestehende Datenmodelle integrieren.

Core Spotlight funktioniert neben NSUserActivity, aber für statische oder häufig aktualisierte Inhalte bietet Ihnen die direkte CSSearchableItem-Indizierung eine feinere Kontrolle.

Voraussetzungen und Setup

Bevor Sie Code schreiben, stellen Sie sicher, dass Ihr Projekt korrekt konfiguriert ist:

  1. Ihre App muss auf iOS 9 oder höher abzielen (die API wurde mit iOS 9 debütiert).
  2. Aktivieren Sie Core Spotlight-Fähigkeit in Xcode – unter Unterschreiben & Capabilities fügen Sie die Berechtigung “Core Spotlight” hinzu.
  3. Importieren Sie das Core Spotlight Framework und MobileCoreServices (für Typidentifikatoren): und .

Es ist keine zusätzliche Serverkonfiguration oder Benutzerberechtigung erforderlich. Die Indexierung erfolgt asynchron im Hintergrund.

Erstellen und Indexieren von durchsuchbaren Elementen

Der Kern von Core Spotlight ist das -Objekt.

  • Ein eindeutiger Bezeichner (z. B. ) – wird später zur Bearbeitung von Auswahl oder Updates verwendet.
  • Eine optionale Domain-Kennung – gruppenbezogene Elemente (z. B. ).
  • Ein attribut-Set () – beschreibt den Inhalt mit Eigenschaften wie , , , und mehr.

Hier ist ein vollständiges Swift-Beispiel, das eine einzelne Note indiziert:

import CoreSpotlight
import MobileCoreServices

func indexNote(note: Note) {
 let attributeSet = CSSearchableItemAttributeSet(itemContentType: kUTTypeText as String)
 attributeSet.title = note.title
 attributeSet.contentDescription = note.body
 attributeSet.keywords = [note.title] + note.tags
 if let imageData = note.thumbnail?.pngData() {
 attributeSet.thumbnailData = imageData
 }

 let item = CSSearchableItem(
 uniqueIdentifier: "com.yourapp.note.\(note.id)",
 domainIdentifier: "com.yourapp.notes",
 attributeSet: attributeSet
 )
 // Optionally set expiration date (default is one month)
 // item.expirationDate = Date.distantFuture

 CSSearchableIndex.default().indexSearchableItems([item]) { error in
 if let error = error {
 print("Indexing error: \(error.localizedDescription)")
 } else {
 print("Note indexed successfully.")
 }
 }
}

Attribute Set Properties

Die erbt und bietet Dutzende von Eigenschaften.

  • – Kurzer, beschreibender Text, der prominent erscheint.
  • – Ein längerer Ausschnitt, der unter dem Titel gezeigt wird.
  • – Array von für alternative Suchbegriffe.
  • [[([[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[
  • – Verlinkt Elemente miteinander (z. B. Eltern-Kind-Notizen).

Verwenden Sie für Medieninhalte typspezifische Eigenschaften wie , oder .

Aktualisieren und Löschen von indexierten Inhalten

Wenn sich der Inhalt Ihrer App ändert, müssen Sie den Index synchronisieren.

Aktualisieren eines Items

Aufrufen Sie mit dem gleichen eindeutigen Bezeichner – die API ersetzt automatisch den alten Eintrag.

Löschen von Positionen

Benutzen Sie oder , um veraltete Inhalte zu entfernen:

CSSearchableIndex.default().deleteSearchableItems(withIdentifiers: ["com.yourapp.note.123"]) { error in
 // handle
}

Batch-Operationen sind effizient: Übergeben Sie Arrays an oder Für einen vollständigen Reset verwenden Sie (selten erforderlich).

Umgang mit Benutzeraktivität und Deep Linking

Wenn ein Benutzer auf ein Spotlight-Ergebnis tippt, erhält Ihre App einen Anruf über die Fortsetzung von , Implementieren Sie die folgende Delegiertenmethode in Ihrem oder :

func application(_ application: UIApplication,
 continue userActivity: NSUserActivity,
 restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {

 if userActivity.activityType == CSSearchableItemActionType {
 if let userInfo = userActivity.userInfo,
 let identifier = userInfo[CSSearchableItemActivityIdentifier] as? String {
 // Navigate to the item with this identifier
 navigateToContent(identifier: identifier)
 return true
 }
 }
 return false
}

Restaurierungsstaat

Für ein reibungsloseres Erlebnis sollten Sie auch implementieren, um einen Ladezustand anzuzeigen.In szenenbasierten Apps (iOS 13+) verwenden Sie die -Methode .

Tiefe Verknüpfung mit NSUserActivity

Core Spotlight arbeitet auch mit dem Mechanismus . Wenn Sie bereits Aktivitäten über indizieren, können Sie das -Flag hinzufügen.

Best Practices für effektives Indexing

Die Einhaltung dieser Richtlinien stellt sicher, dass Ihre indexierten Inhalte relevant und performant bleiben:

1. Index Nur sinnvolle Inhalte

Indexieren Sie nicht jedes winzige Stück Daten, sondern konzentrieren Sie sich auf Elemente, nach denen Benutzer wahrscheinlich suchen: aktuelle Dokumente, hochwertige Seiten oder mit Lesezeichen versehene Inhalte.

2. Richtige Ablaufdaten festlegen

Standardmäßig verfallen Items nach einem Monat. Für statische Inhalte setzen Sie Für zeitkritische Daten (z. B. Ereigniserinnerungen) verwenden Sie ein realistisches Datum.

3. Domain-Identifikatoren sinnvoll verwenden

Domain-Identifikatoren ermöglichen es Ihnen, alle Elemente aus einer Gruppe auf einmal zu löschen, z. B. wenn ein Benutzer einen Ordner löscht, rufen Sie auf.

4. Geben Sie sinnvolle Keywords

Synonyme, gängige Schreibfehler und alternative Namen einfügen. Überfülle vermeiden; 5-10 gut gewählte Keywords reichen aus.

5. Vermeiden Sie die Indexierung von doppeltem Inhalt

Wenn Sie Elemente duplizieren (z. B. denselben Titel in verschiedenen Domänen), sehen die Benutzer verwirrende Ergebnisse. Deduplizieren auf App-Ebene.

6. Batch-Operationen für Bulk-Updates

Wenn Sie viele Elemente synchronisieren (z. B. nach einer Cloud-Wiederherstellung), legen Sie sie in Arrays von 50-100, um das Blockieren des Hauptthreads zu vermeiden.

Performance und Batterieüberlegungen

Core Spotlight läuft mit einem Hintergrundprozess mit geringer Priorität, aber eine schlechte Implementierung kann die Batterie belasten oder die Systemleistung beeinträchtigen:

  • Begrenzt die Reindexierungshäufigkeit – Nur dann reindexieren, wenn sich die Daten tatsächlich ändern, nicht bei jedem App-Start.
  • Drosselung großer Operationen – Verwenden Sie und (verfügbar auf ) für atomare Updates.
  • Vermeiden Sie schwere Bilder – sollte klein sein (z. B. 64 × 64 Punkte, JPEG komprimiert). Große Bilder erhöhen den Gedächtnisdruck.
  • Verwenden Sie den Standardindex – ist für fast alle Apps ausreichend.

Apples Core Spotlight Dokumentation betont, dass die Indexierung als “Feuer und Vergessen” behandelt werden sollte – warten Sie nicht synchron auf die Fertigstellung von Rückrufen im Hauptthread.

Testen der Core Spotlight Integration

Das Debuggen von Spotlight-Ergebnissen kann schwierig sein, weil sie nicht immer sofort angezeigt werden.

  1. Simulatortest – Verwenden Sie iOS Simulator (iOS 15 oder höher). Nach der Indexierung warten Sie einige Sekunden und ziehen Sie dann den Startbildschirm herunter, um zu suchen.
  2. Gerätetest – Testen Sie immer auf einem physischen Gerät. Spotlight-Indizierung verhält sich aggressiver auf echter Hardware.
  3. Reset the index – Verwenden Sie die Settings App: General → Spotlight Search → schalten Sie Ihre App aus und ein.
  4. Verify delete – Stellen Sie nach dem Löschen eines Elements sicher, dass das alte Ergebnis nicht mehr angezeigt wird.
  5. Überprüfen Sie die Debug-Konsole – Aktivieren Sie die Protokollierung, indem Sie in den Schemaargumenten von Xcode übergeben.

Eine nützliche Ressource ist WWDC 2015 “Introducing Core Spotlight”, die grundlegende Konzepte abdeckt, die heute noch anwendbar sind.

Schlussfolgerung

Die Core Spotlight API ist ein robustes, nicht ausgelastetes Tool, das die Interaktion von Nutzern mit Ihrer App verändern kann. Indem Sie relevante, aktuelle Inhalte zum Suchindex des Systems hinzufügen, bieten Sie einen reibungslosen Weg von der Suche zum Inhalt - was die Interaktion und Aufbewahrung erhöht. Beginnen Sie klein: Indexieren Sie zuerst Ihren wichtigsten Inhalt, testen Sie gründlich und erweitern Sie dann, um sekundäre Elemente abzudecken. Denken Sie daran, Ihren Index sauber zu halten, eindeutige Identifikatoren konsistent zu verwenden und Benutzeraktivitäts-Callbacks elegant zu behandeln. Mit den in diesem Artikel beschriebenen Schritten sind Sie bereit, eine erstklassige Sucherfahrung zu liefern, die sich nativer für iOS anfühlt.

Für weitere Informationen lesen Sie bitte die offizielle Core Spotlight Framework Reference und den App Search Programming Guide.