Innføring

Moderne mobilbrukere forventer umiddelbar tilgang til informasjon. Integrering av system ⁇ nivåsøk i iOS-appen dramatisk reduserer friksjonen, slik at brukerne kan finne innhold uten å åpne appen først. Core Spotlight API er Apples innebygde ⁇ i rammeverk for indeksering av appinnhold i enhetens globale Spotlight-søk. Når en bruker søker fra hjemmeskjermen eller i søkevisningen, vises appens indekserte elementer sammen med resultater fra Mail, Meldinger og andre systemapplikasjoner. Denne artikkelen gir en omfattende, produksjonsklar guide til å implementere Core Spotlight, som dekker alt fra grunnleggende indeksering til dyp kobling og ytelsesjustering.

Forstå kjernespotlight og fordelene

Core Spotlight er et lett, personvern ⁇ vennlig indekseringssystem. Det lever helt på ⁇ device ⁇ ingen data etterlater brukerens telefon med mindre du eksplisitt bruker CloudKit. Dette gjør det ideelt for personlig innhold som notater, kontakter, dokumenter eller noen bruker ⁇ generert data. De primære fordelene inkluderer:

  • ⁇ Brukere oppdager innhold de kanskje har glemt, øker gjentatt bruk.
  • Seamless navigation ⁇ Å ta et søkeresultat kan åpne appen direkte til den relevante skjermen.
  • Offline-funksjon ⁇ Indexerte elementer forblir søkbare selv uten Internett-tilkobling.
  • Lave implementasjonskostnader] ⁇ API er lite, godt dokumentert og integrerer enkelt med eksisterende datamodeller.

Core Spotlight fungerer sammen med NSUserActivity indeksering, men for statisk eller ofte oppdatert innhold, gir direkte CSSearchableItem indeksering deg finere kontroll.

Forutsetninger og oppsett

Før du skriver kode, forsikre deg om prosjektet ditt er konfigurert riktig:

  1. Appen din må målrette iOS 9 eller senere (API debutert med iOS 9).
  2. Aktiver Core Spotlight kapasitet i Xcode ⁇ under ]Signering ogamp; Funksjoner legger til \"Kore Spotlight\"-rettigheten. Dette er ofte automatisk inkludert ved import av rammeverket.
  3. Importere rammeverket Core Spotlight og MobileCoreServices (for typeidentifikatorer): og ].

Ingen ekstra serverkonfigurasjon eller brukertillatelse er nødvendig. Indeksering skjer asynkront i bakgrunnen.

Opprette og indeksere søkbare elementer

Kjernen i Core Spotlight er -objektet. Hvert element består av:

  • En unik identifikator (f.eks. ]) ⁇ som senere brukes til å håndtere utvalg eller oppdateringer.
  • En valgfri domeneidentifikator ⁇ grupper relaterte elementer (f.eks. ).
  • En -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Her er et komplett Swift-eksempler som indekserer en enkelt note:

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

Egenskaper for attributtsett

arver fra og tilbyr dusinvis av egenskaper. For de fleste apper er følgende viktige:

  • ⁇ Kort, beskrivende tekst som vises fremtredende.
  • ⁇ En lengre snut som vises under tittelen.
  • ⁇ Array of for alternative søkevilkår.
  • eller ⁇ Visuel forhåndsvisning.
  • ⁇ Koble sammen elementer (f.eks. foreldre ⁇ barnsnotater).

For medieinnhold, bruk type ⁇ spesifikke egenskaper som , eller ].

Oppdaterer og sletter indeksert innhold

Når innholdet til appen endres, må du holde indeksen synkronisert. Bruk de samme metodene:

Oppdaterer et element

Ring med samme unike identifikator ⁇ API erstatter automatisk den gamle oppføringen.

Sletter elementer

Bruk eller til å fjerne staleinnhold:

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

Batchoperasjoner er effektive: passere tabeller til eller . For en full tilbakestilling, bruk (sjelden nødvendig).

Håndtering av brukeraktivitet og dyp linking

Når en bruker trykker på et Spotlight-resultat, mottar appen en anrop gjennom videreføring. Implementer følgende delegasjonsmetode i eller ]:

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
}

Rehabilitering

For en jevnere opplevelse, implementerer også å vise en lastetilstand. I scene-baserte apper (iOS 13+), bruk metode ].

Dype linking med NSUserActivity

Core Spotlight fungerer også med mekanismen. Hvis du allerede indekserer aktiviteter via , kan du legge til flagget. Men for fin-kornet kontroll over titler og beskrivelser, bruk direkte.

Beste praksis for effektiv indeksering

I henhold til disse retningslinjene er det mulig å sikre at det indekserte innholdet ditt forblir relevant og performant:

1. Indeks Bare meningsfullt innhold

Ikke indekser alle små data. Fokus på elementbrukere er sannsynlig å søke etter: nylige dokumenter, høyverdisider eller bokmerker innhold.

2. Sett riktige utløpsdatoer

Som standard utløper elementene etter en måned. For statisk innhold, angi . For tid ⁇ sensitive data (f.eks. hendelsespåminnelser), bruk en realistisk dato.

3. Bruk domeneidentifiseringer klokt

Domeneidentifikatorer lar deg slette alle elementene fra en gruppe samtidig. For eksempel, hvis en bruker sletter en mappe, ring .

4. Gi meningsfulle nøkkelord

Inkludere synonymer, vanlige feilstavinger og alternative navn. Unngå overfylling; 5-10 velvalgte nøkkelord er nok.

5. Unngå indeksering av duplisert innhold

Hvis du du kopierer elementer (f.eks. den samme tittelen i ulike domener), ser brukerne forvirrende resultater. Dedupliserer på app-nivå.

6. Batch operasjoner for bulk oppdateringer

Når du synkroniserer mange elementer (f.eks. etter en skygjenoppretting), sats dem i rekker på 50 ⁇ 100 for å unngå å blokkere hovedtråden. Bruk med en tabell, ikke flere enkeltsamtaler.

Utførelse og batterioverveielser

Core Spotlight kjører en lav-priority bakgrunnsprosess. Men dårlig implementering kan drenere batteri eller nedgradere systemets ytelse:

  • Limit reindexing frekvens ⁇ Bare reindex når data faktisk endres, ikke på hver app lansering.
  • Trøye store operasjoner] ⁇ Bruk og (tilgjengelig på ]) for atomoppdateringer.
  • Avoid tunge bilder ⁇ bør være små (f.eks. 64×64 poeng, JPEG komprimert). Store bilder øker minnetrykket.
  • Bruk standardindeksen ⁇ er tilstrekkelig for nesten alle apper. Oppretting av egendefinerte indekser er sjelden nødvendig.

Apples Kore Spotlight-dokumentasjon understreker at indeksering bør behandles som «brann og glem» ⁇ ikke synkront vente på at ferdigstillelsen blir avsluttet på hovedtråden.

Testing Core Spotlight Integrasjon

Feilsøking Spotlight-resultater kan være vanskelig fordi de ikke alltid vises umiddelbart. Følg denne teststrategien:

  1. Simulatortesting ⁇ Bruk iOS Simulator (iOS 15 eller senere). Etter indeksering, vent et par sekunder, og trekk deretter ned hjemmeskjermen for å søke. Vær oppmerksom på at resultatene kan ta lengre tid i simulatoren.
  2. Enhetstesting ⁇ Alltid test på en fysisk enhet. Spotlight indeksering oppfører seg mer aggressivt på ekte maskinvare.
  3. Reset the index ⁇ Bruk innstillingsappen: Generelt → Spotlight Search → slå av og på appen. Dette fjerner indeksen og tvinger en ny start.
  4. Verifiser sletting ⁇ Etter å ha slettet et element, forsikre det gamle resultatet ikke lenger vises. Noen ganger systemet caches resultater; gi det opp til 30 sekunder.
  5. Sjekk feilsøkingskonsollen ⁇ Aktiver ved å logge ved å passere i Xcodes skjemaargumenter.

En nyttig ressurs er WWDC 2015 “Introdusere Core Spotlight”, som dekker grunnleggende konsepter som fortsatt gjelder i dag.

Konklusjon

Core Spotlight API er et robust, undernyttet verktøy som kan forvandle hvordan brukerne samhandler med appen din. Ved å legge til relevant, oppdatert innhold til systemets søkeindeks, gir du en friksjon ⁇ mindre vei fra søk til innhold ⁇ øke engasjement og oppbevaring. Start liten: indekser ditt viktigste innhold først, test grundig, og deretter utvide til å dekke sekundære elementer. Husk å holde indeksen ren, bruk unike identifikatorer konsekvent og håndtere brukeraktivitets Tilbakekaller graciøst. Med trinnene som er beskrevet i denne artikkelen, er du klar til å levere en førsteklasses søk som føles innfødt til iOS.

For videre lesing, konsulter den offisielle Core Spotlight Framework Reference og App Søk Programmering Guide].