Inleiding

Moderne mobiele gebruikers verwachten direct toegang tot informatie. Het integreren van systeem-niveau zoekopdracht in uw iOS-app vermindert de wrijving drastisch, waardoor gebruikers inhoud kunnen vinden zonder eerst uw app te openen.De Core Spotlight API is Apple .Ingebouwd kader voor het indexeren van app-inhoud in het apparaat Spotlight zoekopdracht. Wanneer een gebruiker zoekt vanuit het Startpagina of in het Zoeken, uw apps geïndexeerde items verschijnen naast resultaten van Mail, Berichten en andere systeemapps. Dit artikel biedt een uitgebreide, productie-ready gids voor het implementeren van Core Spotlight, die alles van basisindexeren tot diep koppelen en prestatie-tuning.

Begrijpen van de kern Spotlight en de voordelen ervan

Core Spotlight is een lichtgewicht, privacyvriendelijk indexeersysteem. Het leeft volledig op het apparaat . Er verlaten geen gegevens de gebruiker zijn telefoon tenzij u expliciet gebruik maakt van CloudKit. Dit maakt het ideaal voor persoonlijke inhoud zoals notities, contacten, documenten of door de gebruiker gegenereerde gegevens. De belangrijkste voordelen zijn:

  • Verhoogde betrokkenheid .. Gebruikers ontdekken inhoud die ze misschien vergeten zijn, waardoor ze het hergebruik stimuleren.
  • Zeamloze navigatie . .Het tikken van een zoekresultaat kan uw app direct openen op het relevante scherm.
  • Offlinecapaciteit . . Geïndexeerde items blijven ook zonder internetconnectiviteit doorzoekbaar.
  • Lage implementatiekosten .De API is klein, goed gedocumenteerd en integreert gemakkelijk met bestaande datamodellen.

Core Spotlight werkt naast NSuserActiviteit indexeren, maar voor statische of vaak bijgewerkte inhoud, directe CSSearchableItem indexering geeft u fijnere controle.

Vereisten en instellingen

Voordat u code schrijft, moet u ervoor zorgen dat uw project correct is geconfigureerd:

  1. Uw app moet zich richten op iOS 9 of later (de API debuteerde met iOS 9).
  2. Schakel Kernspot -functie in Xcode
  3. Importeer het core Spotlight-raamwerk en de MobileCoreServices (voor type-identificaties): en .

Er is geen extra serverconfiguratie of gebruikerstoegang nodig. Indexeren gebeurt asynchroon op de achtergrond.

Zoekbare items aanmaken en indexeren

De kern van Core Spotlight is het object. Elk item bestaat uit:

  • Een unieke identificatiecode (bv. )
  • Een optionele domeinidentificatie ..groepen gerelateerde items (bv. ).
  • Een attribuutset () beschrijft de inhoud met eigenschappen als , , , en meer.

Hier is een compleet Swift voorbeeld dat een enkele noot indexeert:

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.")
 }
 }
}

Eigenschappen van attribuut instellen

De erft van en biedt tientallen eigenschappen. Voor de meeste apps zijn de volgende essentiële:

  • .. Korte, beschrijvende tekst die prominent lijkt.
  • ..Een langer knipsel dat onder de titel wordt getoond.
  • .. Array van voor alternatieve zoektermen.
  • of ..Visuele voorvertoning.
  • .. Koppelt items samen (bijvoorbeeld ouder-kind notities).

Voor media-inhoud, gebruik typespecifieke eigenschappen zoals , ] of .

Bijwerken en verwijderen van geïndexeerde inhoud

Wanneer uw app inhoud verandert, moet u de index in sync houden. Gebruik dezelfde methoden:

Item bijwerken

Oproep met dezelfde unieke identificatiecode .De API vervangt automatisch de oude vermelding.

Items verwijderen

Gebruik of om de oude inhoud te verwijderen:

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

Batchbewerkingen zijn efficiënt: pass arrays naar of . Voor een volledige reset, gebruik (zelden nodig).

Gebruikersactiviteit en diepe koppeling

Wanneer een gebruiker een Spotlight-resultaat tikt, ontvangt uw app een oproep via de voortzetting. Voer de volgende gedelegeerde methode in uw of uit:

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
}

Herstelstaat

Voor een soepelere ervaring, implementeer ook om een laadtoestand te tonen. In scènegebaseerde apps (iOS 13+), gebruik de ,9]] methode ,9]].

Diepe koppeling met NSUserActiviteit

Core Spotlight werkt ook met het mechanisme. Als je al activiteiten indexeert via , kun je de vlag toevoegen. Echter, voor fijnkorrelige controle over titels en beschrijvingen, gebruik direct.

Beste praktijken voor effectieve indexering

Volgens deze richtlijnen blijft uw geïndexeerde inhoud relevant en performant:

1. Index Alleen betekenisvolle inhoud

Niet indexeren elk klein stukje gegevens. Focus op items gebruikers zijn waarschijnlijk te zoeken naar: recente documenten, hoogwaardige pagina's, of bladwijzer inhoud.

2. Stel juiste vervaldatums in

Standaard verlopen items na één maand. Voor statische inhoud, stel . Voor tijdgevoelige gegevens (bijv. herinneringen aan gebeurtenissen) gebruik een realistische datum.

3. Gebruik domeinidentificaties verstandig

Domein-identiteiten kunnen alle items tegelijk uit een groep verwijderen. Bijvoorbeeld, als een gebruiker een map verwijdert, bel .

4. Zorg voor betekenisvolle trefwoorden

Voeg synoniemen, veelvoorkomende spellingen en alternatieve namen toe. Vermijd overspulling; 5

5. Vermijd het indexeren van de inhoud van dupliceren

Als je items dupliceert (bijvoorbeeld dezelfde titel in verschillende domeinen), zien gebruikers verwarrende resultaten. Dedupliceer op het niveau van de app.

6. Batch Operaties voor Bulk Updates

Bij het synchroniseren van veel items (bijv. na een cloudherstel) worden ze in groepen van 50/100 in bulk opgeslagen om te voorkomen dat de hoofddraad wordt geblokkeerd. Gebruik met een array, niet met meerdere enkele oproepen.

Prestaties en overwegingen bij de batterij

Core Spotlight heeft een lage prioriteit achtergrondproces. Maar slechte implementatie kan de batterij leeglopen of systeemprestaties afbreken:

  • Limiteer herindexeerfrequentie
  • Verzet grote operaties
  • Vermijd zware beelden
  • Gebruik de standaard index

Apple

Testen van de integratie van kernspotlicht

Debuggen Spotlight resultaten kunnen lastig zijn omdat ze niet altijd onmiddellijk verschijnen. Volg deze teststrategie:

  1. Simulatortest
  2. Apparaat testen .. Test altijd op een fysiek apparaat. Spotlight indexeren gedraagt zich agressiever op echte hardware.
  3. De index resetten
  4. Verifiëren verwijdering
  5. Controleer de debugconsole . . Schakel inloggen in door in Xcodes schemaargumenten.

Een nuttige hulpbron is WWDC 2015

Conclusie

De Core Spotlight API is een robuuste, onderbenut instrument dat de interactie tussen gebruikers en uw app kan transformeren. Door relevante, up-to-date inhoud toe te voegen aan de systeemzoekindex, biedt u een wrijvingsloze pad van zoeken naar inhoud . . Boosteren van betrokkenheid en retentie. Start klein: indexeer eerst uw belangrijkste inhoud, test grondig en breidt u uit naar secundaire items. Vergeet niet om uw index schoon te houden, unieke identificaties consequent te gebruiken en gebruikersactiviteit te verwerken callbacks sierlijk. Met de stappen die in dit artikel worden beschreven, bent u klaar om een eersteklas zoekervaring te leveren die eigen is aan iOS.

Voor meer informatie, raadpleeg de officiële Kern Spotlight Framework Reference en de App Search Programmeringsgids.