Table of Contents
Introducere
Utilizatorii mobili moderni se așteaptă acces instant la informații.Integrarea căutării la nivel de sistem în aplicația ta iOS reduce dramatic frecarea, permițând utilizatorilor să găsească conținut fără a deschide aplicația ta mai întâi. Core API Spotlight] este cadrul Apple Apple .Acest articol oferă un ghid cuprinzător, gata de producție pentru implementarea Spotlight Central, acoperind totul de la indexarea de bază la conectarea profundă și turea performanței.
Înţelegerea luminii de bază şi a beneficiilor ei
Central Spotlight este un sistem de indexare ușor, prietenos cu confidențialitatea. Trăiește în întregime on-
- Imbatranire crescută
- Navigație fără echipaj
- Capacitate de linie
- Cheltuieli reduse de implementare
Central Spotlight lucrează alături de NSUserActivity indexare, dar pentru conținutul static sau frecvent actualizat, indexarea directă a CSSearchableItem vă oferă un control mai fin.
Precondiții și configurare
Înainte de a scrie codul, asigurați-vă că proiectul este configurat corect:
- Aplicația dumneavoastră trebuie să vizeze iOS 9 sau mai târziu (API a debutat cu iOS 9).
- Activează Core Spotlight capacitatea în Xcode
- Importă cadrul central al luminii luminoase și serviciile mobileCoreService (pentru identificatorii de tip): și .
Nu este necesară o configurare suplimentară a serverului sau permisiunea utilizatorului. Indexarea se întâmplă asincronic în fundal.
Crearea și indexarea elementelor care pot fi căutate
Miezul de bază al Spotlight este obiectul . Fiecare element constă din:
- A identificator unic (de exemplu, ]]
- Un identificator de domeniu opțional
- Un set de atribut ([)
Aici este un exemplu Swift complet care indexează o singură notă:
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.")
}
}
}
Atribuiți Proprietățile setului
moștenește de la și oferă zeci de proprietăți. Pentru majoritatea aplicațiilor, sunt esențiale următoarele:
- sau
Pentru conținutul de media, utilizați proprietăți specifice tipului, cum ar fi , sau .
Actualizarea și eliminarea conținutului indexat
Când aplicația se schimbă, trebuie să păstrați indexul sincronizat. Utilizați aceleași metode :
Actualizarea unui element
Apel cu același identificator unic
Ștergerea elementelor
Se utilizează sau pentru a elimina conținutul vechi:
CSSearchableIndex.default().deleteSearchableItems(withIdentifiers: ["com.yourapp.note.123"]) { error in
// handle
}
Operaţiunile în serie sunt eficiente: treceţi array-urile la sau . Pentru o resetare completă, folosiţi (realmente necesar).
Manipularea activității utilizatorilor și conectarea profundă
Atunci când un utilizator atinge un rezultat Spotlight, aplicația dumneavoastră primește un apel prin continuarea . Implementați următoarea metodă de delegare în ]] sau :
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
}
Statul de restaurare
Pentru o experiență mai ușoară, se implementează și pentru a arăta o stare de încărcare. În aplicații bazate pe scenă (iOS 13+), se utilizează metoda .
Legarea profundă cu NSUserActivity
Central Spotlight funcţionează şi cu mecanismul . Dacă deja indexaţi activităţile prin , puteţi adăuga steagul . Totuşi, pentru controlul fin asupra titlurilor şi descrierilor, folosiţi direct.
Cele mai bune practici de indexare eficientă
În urma acestor orientări, conţinutul indexat rămâne relevant şi performant:
1. Index numai conținut semnificativ
Nu indexa fiecare bucată mică de date. Concentrează-te pe elemente utilizatorii sunt susceptibile de a căuta: documente recente, pagini de mare valoare, sau conținut marcat de carte.
2. Stabilirea datelor de expirare adecvate
Pentru continutul static setat . Pentru datele sensibile la timp (de exemplu, anunturi la evenimente), se foloseste o data realista.
3. Utilizați cu înțelepciune identificatorii de domeniu
Identificatorii de domeniu vă permit să ștergeți toate elementele dintr-un grup în același timp. De exemplu, dacă un utilizator șterge un dosar, apel .
4. Oferiţi cuvinte cheie semnificative
Include sinonime, mispelling comune, și nume alternative. Evitați supraalimentare; 5
5. Evitați indexarea conținutului duplicat
Dacă duplicati elemente (de exemplu, același titlu în diferite domenii), utilizatorii văd rezultate confuze. Deduplicați-vă la nivelul aplicației.
6. Operaţiuni de lot pentru actualizări vrac
Când sincronizezi multe elemente (de exemplu, după restaurarea unui nor), le pui în array-uri de 50 ?100 pentru a evita blocarea filetului principal. Utilizați ] cu un array, nu mai multe apeluri unice.
Performanță și consideraţii de baterie
Central Spotlight rulează un proces de fundal cu prioritate redusă. Dar implementarea slabă poate drena bateria sau degrada performanța sistemului:
- Limit reindexing frecvence
- Acțiuni de mare viteză
- Evitați imaginile grele
- Folosiţi indexul implicit
Apple Core Spotlight documentation subliniază că indexarea ar trebui tratată ca
Testarea integrării centrale a luminii la fața locului
Depanarea rezultatelor Spotlight poate fi complicată deoarece nu apar întotdeauna imediat. Urmați această strategie de testare:
- Testarea simulatorului
- Testare de device
- Resetați indexul
- Verificați ștergerea
- Verificați consola de depanare
O resursă utilă este WDC 2015
Concluzie
Core Spotlight API este un instrument robust, subutilizat care poate transforma modul în care utilizatorii interacționează cu aplicația ta. Prin adăugarea de conținut relevant, actualizat la indexul de căutare al sistemului de țigări, vă oferi o cale fără frecare de la căutare la conținut . . Începeți mici: indexați conținutul cel mai important mai întâi, testați bine, și apoi extindeți-vă pentru a acoperi elementele secundare. Amintiți-vă să păstrați indexul curat, utilizați identificatori unici în mod consecvent, și să se ocupe de apelurile de activitate a utilizatorului grațios. Cu pașii prezentați în acest articol, sunteți gata să livreze o experiență de căutare de primă clasă, care se simte nativ la iOS.
Pentru o citire ulterioară, consultați oficialul Core Spotlight Framework Reference și App Search Programming Guide.