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:

  1. Aplicația dumneavoastră trebuie să vizeze iOS 9 sau mai târziu (API a debutat cu iOS 9).
  2. Activează Core Spotlight capacitatea în Xcode
  3. 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:

  1. Testarea simulatorului
  2. Testare de device
  3. Resetați indexul
  4. Verificați ștergerea
  5. 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.