Table of Contents
Pengantar Perjanjian Lama
Pengguna seluler modern yang berharap akses informasi secara instan. Menetralkan pencarian sistem ⁇ level ke dalam aplikasi iOS Anda secara dramatis mengurangi gesekan, memungkinkan pengguna untuk menemukan konten tanpa membuka aplikasi Anda terlebih dahulu. Core Spotlight API[ adalah kerangka kerja Apple yang dibangun ⁇ dalam rangka kerja untuk mengindeks konten aplikasi ke dalam pencarian Spotlight global perangkat. Ketika pengguna mencari dari layar Home atau dalam tampilan Search, item berindeks aplikasi Anda muncul bersama hasil dari Mail, Message, dan aplikasi sistem lainnya. Artikel ini menyediakan panduan produksi yang komprehensif, ⁇ siap untuk menerapkan Core, meliputi segala sesuatu yang meliputi indeks dasar dan menghubungkan kinerja.
Keanekaragaman yang Memerlukan Cahaya Terang Inti dan Manfaatnya
¡Toe Spotlight adalah sistem indeks yang ringan, privasi ⁇ ramah dan ramah. Sistem ini hidup sepenuhnya pada ⁇ device ⁇ tidak ada data yang meninggalkan telepon pengguna kecuali Anda secara eksplisit menggunakan CloudKit. Hal ini membuatnya ideal untuk konten pribadi seperti catatan, kontak, dokumen, atau data pengguna manapun ⁇ dihasilkan. Manfaat utama meliputi:
- [[LAT$]]Meningkatkan keterlibatan ⁇ Pengguna menemukan konten yang mungkin telah dilupakan, meningkatkan penggunaan berulang.
- Seamless navigation ⁇ Mengetuk hasil pencarian dapat membuka aplikasi Anda langsung ke layar yang relevan.
- [[CANDIAN Offline kapability ⁇ Barang berindeks tetap dapat dicari walaupun tanpa konektivitas internet.
- [[Longlauran:0]]Low implementasi biaya ⁇ API kecil, baik ⁇ didokumentasi, dan terintegrasi dengan mudah dengan model data yang ada.
indexing]NSUserActivity]] indexing, tetapi untuk konten statis atau sering diperbarui, direct CSSearchableItem indexing memberikan kontrol finer.
Keperluan dan Persediaan
Sebelum menulis kode, pastikan projek anda dikonfigurasi dengan benar:
- Aplikasi Anda harus menargetkan iOS 9 atau setelahnya (API debut dengan iOS 9).
- Forevane Forevanal Aktifkan Core Spotlight kapabilitas dalam Xcode ⁇ di bawah Signaling & Kapabilitas menambahkan entitlement \"Core Spotlight\". Hal ini sering kali dimasukkan secara otomatis ketika mengimpor kerangka kerja.
- . Mengimpor kerangka kerja Core Spotlight dan MobileCoreServices (untuk pengidentifikasi jenis): dan .
Tesgoji Tidak ada konfigurasi server tambahan atau izin pengguna yang diperlukan. Pengindeksan terjadi secara asinkron di latar belakang.
Come dan Indeks Item Dapat Diselidik
core dari Core Spotlight adalah objek . Setiap item terdiri dari:
- A unique identifier (e.g., ) ⁇ digunakan kemudian untuk menangani pemilihan atau pemutakhiran.
- Opsional domain peladen ⁇ kelompok item terkait (e.g., ).
- A attribute set (]) ⁇ menggambarkan konten dengan properti seperti , , , , dan lebih.
Contoh lengkap dari Feedles berikut ini:
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.")
}
}
}
Properti Set Atribut Atribut Leleot
ifrica mewarisi dari dan menawarkan puluhan properti. Untuk kebanyakan aplikasi berikut sangat penting:
- [[TELT:13]] ⁇ Teks pendek, deskriptif yang muncul menonjol.
- [[XOLT:14]] ⁇ Snippet yang lebih panjang ditunjukkan di bawah judul.
- ⁇ Array of untuk istilah pencarian alternatif.
- atau ⁇ Visual preview.
- [[NextaleFLT:19]] ⁇ Links items withong (e.g., parent ⁇ child notes).
Untuk konten media, gunakan jenis ⁇ sifat spesifik seperti , , atau .
Mengemaskini dan Menghapus Kandungan Berindeks
Ketika isi aplikasi Anda berubah, Anda harus menjaga indeks tetap selaras. Gunakan metode yang sama:
Mengemaskinikan Item
Nama panggilan dengan tanda pengenal unik yang sama ⁇ API secara otomatis menggantikan entri lama.
Memadam item
ifford Gunakan atau untuk menghapus konten basi:
CSSearchableIndex.default().deleteSearchableItems(withIdentifiers: ["com.yourapp.note.123"]) { error in
// handle
}
Operasi batch palachido efisien: larik pass ke atau . Untuk reset penuh, gunakan (rerata dibutuhkan).
Aktiviti Pengguna Pengendalian dan Pemautan yang Dalam
Ketika pengguna menyadap hasil Spotlight, aplikasi anda menerima panggilan melalui kelanjutan. Implementasi metode delegasi berikut dalam atau :
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
}
Negara Bagian Pemulihan Beji
Untuk pengalaman yang lebih lancar, juga mengimplementasikan untuk menunjukkan keadaan pemuatan. Dalam scene ⁇ based apps (iOS 13+), gunakan metode .
Keterkaitan mendalam dengan NSUserActivity
¡Cuadio Core Spotlight juga bekerja dengan mekanisme . Jika anda sudah index kegiatan melalui , anda dapat menambahkan bendera . Namun, untuk kontrol halus ⁇ digrainasi atas judul dan deskripsi, gunakan secara langsung.
Praktek Terbaik untuk Pengindeksan yang Efektif
Keikutan pedoman ini memastikan konten berindeks Anda tetap relevan dan dilakukan:
1. Indeks Hanya Kandungan yang Bermakna
Jangan indeks setiap potongan kecil data. Fokus pada item yang mungkin dicari pengguna: dokumen baru-baru ini, halaman bernilai tinggi, atau isi yang dibookmark.
2. Tetapkan Tanggal Luput yang Tepat
Secara default, item kadaluarsa setelah satu bulan. Untuk konten statis, ditetapkan . Untuk waktu ⁇ data sensitif (misalnya, pengingat acara), gunakan tanggal realistis.
Use Domain Identifiers Wisely
Pengenalpasti Domain ifgonus memungkinkan anda untuk menghapus semua item dari suatu grup sekaligus. Sebagai contoh, jika pengguna menghapus folder, panggil .
4 (Surat Kata Kata Kata Kata Kata yang Maknanya), 4 (Surat Kata Kata), 4 (Surat Kata), 4 / 4
Nama sinonim, kesalahan ejaan umum, dan alternatif. Hindari overstufding; 5 ⁇ baik ⁇ pilih kata kunci cukup.
¡Fy.
Viewer Jika Anda menduplikasi item (mis., judul yang sama dalam domain yang berbeda), pengguna melihat hasil yang membingungkan. Mereduksi pada tingkat aplikasi.
6. Operasi Batch untuk Pemutakhiran Bulak
Ketika melakukan sinkronisasi banyak item (misalnya, setelah restore awan), susun mereka menjadi susunan 50 ⁇ 100 untuk menghindari pemblokiran benang utama. Gunakan dengan sebuah array, bukan multiple panggilan tunggal.
Pertimbangan Kinerja dan Baterai
Core Spotlight menjalankan proses latar belakang yang rendah ⁇ prioritas.Tapi implementasi yang buruk dapat menguras baterai atau menurunkan kinerja sistem:
- [[GANDAFLT:0]]Limit reindexing frekuensi[] ⁇ Hanya reindex ketika data benar-benar berubah, bukan pada setiap peluncuran aplikasi.
- [[EzolfLT:0]] Throttle operasi besar ⁇ Gunakan dan (tersedia pada ) untuk pemutakhiran atom.
- [[EfolzaFLT:0]]Avoid heavy images ⁇ harus kecil (contoh, 64×64 point, JPEG dimampatkan). Gambar besar meningkatkan tekanan memori.
- [[EfolfsFLT:0]]Gunakan indeks baku ⁇ cukup untuk hampir semua aplikasi.Membuat indeks suai jarang diperlukan.
Dokumensi toollight]Core Spotlight]] menekankan bahwa pengindeksan harus diperlakukan sebagai \"api dan lupa\" ⁇ jangan secara sinkron menunggu panggilan balik pelengkapan pada benang utama.
Pengujian Infragrasi Cahaya Terang Inti
Hasil Spotlight yang sedang melakukan debuggging yang tidak mudah karena mereka tidak selalu muncul dengan segera. Ikuti strategi pengujian ini:
- [ZOU]AZOFLT:0]]Simulator pengujian ⁇ Gunakan iOS Simulator (iOS 15 atau nanti). Setelah pengindeksan, tunggu beberapa detik, kemudian tarik turun layar Home untuk mencari. Perlu diingat bahwa hasil mungkin membutuhkan waktu lebih lama di Simulator.
- [[CHUBILT:0]]Peranti pengujian ⁇ Selalu uji pada perangkat fisik. Spotlight indexing berperilaku lebih agresif pada perangkat keras nyata.
- Reset indeks ⁇ Gunakan aplikasi Pengaturan: Umum → Pencarian Spotlight → togol aplikasi Anda off dan on. Ini membersihkan indeks dan memaksa awal baru.
- [[EZALT:0]]Verify elegate ⁇ Setelah menghapus suatu item, pastikan hasil lama tidak lagi muncul. Kadang-kadang hasil cache sistem; berikan hingga 30 detik.
- [[EfronFLT:0]]Periksa konsol awak alat ⁇ Aktifkan logging dengan melewati dalam argumen skema Xcode.
Sumber daya yang berguna adalah WWWDC 2015 \"Perkenalkan Core Spotlight\", yang meliputi konsep-konsep fondasi masih berlaku sampai sekarang.
Kekecualian Kesimpulan
API Core Spotlight adalah alat yang kuat dan kurang termanfaatkan yang dapat mengubah bagaimana pengguna berinteraksi dengan aplikasi Anda. Dengan menambahkan relevan, up ⁇ to ⁇ date konten ke indeks pencarian sistem, Anda menyediakan gesekan ⁇ kurang jalur dari pencarian ke konten ⁇ meningkatkan keterlibatan dan retensi. Mulailah kecil: indeks konten yang paling penting Anda pertama, uji secara menyeluruh, dan kemudian memperluas untuk menutupi item sekunder. Ingat untuk menjaga indeks Anda bersih, menggunakan identifier unik secara konsisten, dan menangani aktivitas pengguna secara anggun. Dengan langkah yang diuraikan dalam artikel ini, Anda siap untuk menyampaikan pengalaman pencarian pertama ⁇ kelas yang dirasakan asli ke iOS.
Untuk pembacaan lebih lanjut, berkonsultasi dengan situs web resmi Core Spotlight Framework Reference dan App Search Programming Guide.