Introduktion
Moderna mobila användare förväntar sig omedelbar tillgång till information. Integrering systemnivåsökning i din iOS-app minskar dramatiskt friktion, så att användarna kan hitta innehåll utan att öppna din app först. ]Core Spotlight API ] är Apples inbyggda ram för indexering av appinnehåll i enhetens globala Spotlight-sökning. När en användare söker från startskärmen eller inom sökvyn visas dina appens indexerade objekt tillsammans med en grund för bildhantering och andra systemappar.
Förstå kärnpunktsbelysning och dess fördelar
Core Spotlight är ett lätt, integritetsvänligt indexeringssystem. Det lever helt på-enhet - inga data lämnar användarens telefon om du inte uttryckligen använder CloudKit. Detta gör det idealiskt för personligt innehåll som anteckningar, kontakter, dokument eller användargenererade data. De primära fördelarna inkluderar:
- Ökat engagemang - Användare upptäcker innehåll som de kan ha glömt, vilket ökar upprepad användning.
- Seamless navigation – Att trycka på ett sökresultat kan öppna appen direkt till den relevanta skärmen.
- Offline-kapacitet] - Indexerade objekt förblir sökbara även utan internetanslutning.
- Låg implementeringskostnad – API är liten, väldokumenterad och integreras enkelt med befintliga datamodeller.
Core Spotlight fungerar tillsammans med NSUserActivity] indexering, men för statiskt eller ofta uppdaterat innehåll, direkt CSSearchableItem indexering ger dig bättre kontroll.
Förutsättningar och inställning
Innan du skriver kod, se till att ditt projekt är korrekt konfigurerat:
- Din app måste rikta in iOS 9 eller senare ] (API debuterade med iOS 9).
- Möjliggöra ]]Core Spotlight ] kapacitet i Xcode - under ]]]Signing & kapacitet ]] lägg till "Core Spotlight" rättighet. Detta ingår ofta automatiskt när du importerar ramen.
- Importera Core Spotlight-ramverket och MobileCoreServices (för typidentifierare): ] och ]].
Ingen ytterligare serverkonfiguration eller användartillstånd behövs. Indexering sker asynkront i bakgrunden.
Skapa och indexera sökbara objekt
Kärnan i Core Spotlight är ] objektet. Varje objekt består av:
- ] Unik Identifikation (t.ex. ]) – som senare används för att hantera val eller uppdateringar.
- En valfri domänidentifierare - grupper relaterade objekt (t.ex. ]).
- ] [[[]]] - beskriver innehållet med egenskaper som ], ]], ]]], och mer.
Här är ett komplett Swift-exempel som indexerar en enda anteckning:
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.")
}
}
}
Attributera Set Properties
ärv från ]] och erbjuder dussintals egenskaper. För de flesta appar är följande viktiga:
- - Kort, beskrivande text som framträder framträdande.
- - En längre utdrag som visas under titeln.
- - Utför ] för alternativa sökord.
- ] eller ] - Visuell förhandsvisning.
- ] - Länkar objekt tillsammans (t.ex. föräldra-barn noter).
För medieinnehåll, använd typspecifika egenskaper som , ]] eller ]].
Uppdatering och borttagning av indexerat innehåll
När din apps innehåll ändras måste du hålla indexet synkroniserat. Använd samma metoder :
Uppdatera ett objekt
Ring med samma unika identitet – API ersätter automatiskt den gamla posten.
Ta bort objekt
Använd eller ] för att ta bort förföljelseinnehåll:
CSSearchableIndex.default().deleteSearchableItems(withIdentifiers: ["com.yourapp.note.123"]) { error in
// handle
}
Batchoperationer är effektiva: passerar arrays till ] eller ]. För en fullständig återställning, använd (sällan behövs).
Hantera användaraktivitet och djup länkning
När en användare kranar ett Spotlight-resultat, får din app ett samtal genom ] fortsättning. Genomföra följande delegatmetod i din 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
}
Återställande stat
För en smidigare upplevelse, även implementera ] för att visa ett laddningstillstånd. I scenbaserade appar (iOS 13+), använd ]-metoden .
Djup länkning med NSUserActivity
Core Spotlight fungerar också med ] mekanismen. Om du redan indexerar aktiviteter via ] kan du lägga till ]]] flaggan. Men för finkornig kontroll över titlar och beskrivningar, använd direkt.
Bästa praxis för effektiv indexering
Efter dessa riktlinjer säkerställer att ditt indexerade innehåll är relevant och prestationsrikt:
Index endast meningsfullt innehåll
Index inte varje liten bit av data. Fokus på objekt som användare sannolikt kommer att söka efter: senaste dokument, högvärdiga sidor eller bokmärkt innehåll.
Ställ in korrekta utgångsdatum
Som standard, objekt löper ut efter en månad. För statiskt innehåll, ställ in . För tidskänsliga data (t.ex. händelsepåminnelser), använd ett realistiskt datum.
Använd domänidentifierare på ett klokt sätt
Domänidentifierare låter dig ta bort alla objekt från en grupp samtidigt. Om en användare raderar en mapp, ring .
4. Ge meningsfulla sökord
Inkludera synonymer, vanliga felstavningar och alternativa namn. Undvik överstuffing; 5-10 väl valda sökord är tillräckligt.
Undvik indexering duplicerat innehåll
Om du duplicerar objekt (t.ex. samma titel i olika domäner) ser användarna förvirrande resultat. Deduplicera på appnivån.
6. Batch Operations för Bulk Updates
När du synkroniserar många objekt (t.ex. efter en molnåterställning), batch dem i samlingar av 50-100 för att undvika att blockera huvudtråden. Använd ] med en samling, inte flera enskilda samtal.
Prestanda och batteri överväganden
Kärnpunktsljus driver en lågprioriterad bakgrundsprocess. Men dålig implementering kan tömma batteri- eller nedbrytningssystemprestanda:
- ] Limit reindexing frekvens - Endast reindex när data faktiskt ändras, inte på varje app lansering.
- ]]]Trottle big operations - Använd och ] (tillgänglig på ]) för atomuppdateringar.
- ] Väg tunga bilder[ - ]]] bör vara små (t.ex. 64×64 poäng, JPEG komprimerade). Stora bilder ökar minnestrycket.
- ] Använd standardindexet - ]] är tillräckligt för nästan alla appar. Skapa anpassade index behövs sällan.
Apples ]Core Spotlight-dokumentation] betonar att indexering bör behandlas som "eld och glöm" - inte synkront vänta på slutförande återkopplingar på huvudtråden.
Testa kärnpunktsbelysning Integration
Debugging Spotlight-resultat kan vara svårt eftersom de inte alltid visas omedelbart. Följ denna teststrategi:
- Simulatortestning[] - Använd iOS Simulator (iOS 15 eller senare) Efter indexering, vänta några sekunder, dra sedan ner Hemskärmen för att söka. Var medveten om att resultaten kan ta längre tid i Simulatorn.
- ] Envistestning - Testa alltid på en fysisk enhet. Spotlight-indexering beter sig mer aggressivt på riktig hårdvara.
- Återställ indexet - Använd appen Inställningar: Allmänt → Spotlight Search → växla din app och på. Detta rensar indexet och tvingar en ny start.
- ] Verify deletion ] - Efter att ha tagit bort ett objekt, se till att det gamla resultatet inte längre visas. Ibland systemet cachar resultat; ge det upp till 30 sekunder.
- ]Kontrollera debugkonsolen - Möjliggöra ] loggning genom att passera ]]] i Xcodes systemargument.
En användbar resurs är ]WWDC 2015 "Introduktion Core Spotlight"], som täcker grundläggande begrepp som fortfarande är tillämpliga idag.
Slutsats
Core Spotlight API är ett robust, underutnyttjat verktyg som kan omvandla hur användare interagerar med din app. Genom att lägga till relevant, aktuellt innehåll till systemets sökindex, ger du en friktionsfri väg från sök till innehåll - öka engagemang och retention. Börja små: indexera ditt viktigaste innehåll först, testa noggrant och sedan expandera för att täcka sekundära objekt. Kom ihåg att hålla ditt index rent, använd unika identifierare konsekvent och hantera användaraktivitetsuppringarna graciöst. Med de steg som beskrivs i den här artikeln, är du redo att leverera en förstklassig sökupplevelse som
För vidare läsning, kontakta den officiella ]Core Spotlight Framework Reference och ]] Sök Programming Guide .