Цивільно-імперські послуги; структурне будівництво
Використання API Ios Core Spotlight для ефективного пошуку контенту у вашому додатку
Table of Contents
Вступ
Сучасні мобільні користувачі очікують миттєвий доступ до інформації. Інтеграція системи-рівень пошук у додатку iOS різко знижує тертя, що дозволяє користувачам знайти вміст без відкриття вашого додатку першим. Core Spotlight API - це вбудована рамка Apple для індексування вмісту додатків в глобальний прожектор пристрою. Коли користувач шукає з домашнього екрану або в рамках перегляду, ваші дані застосунків з'являються поряд з результатами розсилки, повідомлень та інших системних додатків. Ця стаття забезпечує комплексний, виробничо-прочитаний посібник для реалізації Core Spotlight, охоплює все з базового індексування для глибокого зв'язку та продуктивності.
Розуміння Core Spotlight та його переваги
Core Spotlight - це легкий, конфіденційність є безпечною системою індексування. Він повністю живе на ‐device - немає даних, що не залишає телефон користувача, якщо ви явно використовуєте CloudKit. Це робить його ідеальним для особистого вмісту, таких як ноти, контакти, документи, або будь-які дані, що використовуються користувачем. Основні переваги включають:
- Increased actionment – Користувачі, які виявляються, вони можуть бути забуті, підвищуючи повторне використання.
- Навігація безшовної – Натискання результату пошуку можна відкрити додаток безпосередньо до відповідного екрану.
- Оффлайн Можливість] – Індексовані елементи залишаються пошуковими, навіть без підключення до Інтернету.
- Для реалізації – API невеликий, добре довідковий і легко інтегрується з існуючими моделями даних.
Core Spotlight працює поряд з NSUserActivity індексування, але для статичного або часто оновленого вмісту, прямий індексування CSSearchableItem дає вам тонкий контроль.
Передумови та налаштування
Перед тим як писати код, забезпечте свій проект правильно:
- Ваше додаток має бути цільове iOS 9 або пізніше ( API дебютував з iOS 9).
- Увімкнути Core Spotlight] можливість в Xcode – під ]Підігрів та підсилювач; Ємності додано назву «Core Spotlight». Це часто автоматично входить при імпорті каркасу.
- Імпорт основних засобів Spotlight та мобільнихCoreServices (для ідентифікаторів типу): та .
Немає додаткових налаштувань сервера або дозволу користувача. Індексування відбувається безперечно в фоновому режимі.
Створення та індексування пошукових елементів
Основна частина Core Spotlight — об'єкт . Кожен елемент складається з:
- unique identifier] (наприклад, ]) – використовується пізніше для вибору або оновлення.
- Додатково домен ідентифікатор] – групи, пов’язані елементи (наприклад, ).
- ], ]]) – описує вміст з властивостями, такими як , , , , і багато іншого.
Ось повний приклад Swift, який індексує одну замітку:
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.")
}
}
}
Атрибут Властивості
спадкоємець і пропонує десятки властивостей. Для більшості додатків, такі важливі:
- – Короткий, дескриптивний текст, який виявляється помітно.
- - Довший фрагмент, зображений нижче назви.
- - Арра для альтернативних умов пошуку.
- або - Візуальне перегляд.
- – Посилання на товари разом (наприклад, материнські плати).
Для медіаконтенту, використовують типо-специфічні властивості , , або .
Оновлення та видалення індексованого вмісту
Коли зміни вмісту вашого додатку, ви повинні зберігати індекс у синхронізації. Використовуйте те ж саме :
Оновлення виробу
Зателефонуйте з тим самим унікальним ідентифікатором – API автоматично замінює старий запис.
Видалення елементів
або для видалення вмісту стебла:
CSSearchableIndex.default().deleteSearchableItems(withIdentifiers: ["com.yourapp.note.123"]) { error in
// handle
}
Пакетні операції ефективні: перенести масиви до або . Для повного скидання використовуйте (раніше потрібно).
Обробка активності користувачів та глибокого зв'язку
Коли користувач натискає результат Spotlight, ваш додаток отримує виклик через . Впровадження наступного методу делегування в або :
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
}
Реставрація держави
Для більш гладкого досвіду, також реалізовано для відображення завантажувального стану. У сценарних додатках (iOS 13+), скористайтеся методом .
Глибоке посилання з NSUserActivity
Core Spotlight також працює з механізмом . Якщо ви вже індексуєте діяльність через , ви можете додати прапор . Однак для тонко-зважених контроль за назвами та описами, скористайтеся безпосередньо.
Кращі практики ефективного індексування
Наведено рекомендації щодо визначення індексованого вмісту, що відповідає дійсності та виконавцю:
1. Індекс тільки Значення вмісту
Не індексуйте всі крихітні дані. Зосереджуйте на предметах користувачів, ймовірно, для пошуку: останні документи, сторінки високої чіткості або закладеного вмісту.
2. Встановити дату закінчення терміну дії Proper
За замовчуванням елементи закінчуються після одного місяця. Для статичного вмісту, встановіть . Для своєчасних даних (наприклад, нагадування про події), скористайтеся реальною датою.
3. Використовуйте ідентифікатори домену, що виводяться
Визначальники домену дозволяють видалити всі товари з групи одночасно. Наприклад, якщо користувач видаляє папку, зателефонуйте .
4. Забезпечити Значення Ключові слова
У тому числі синонімів, поширених пробивок, альтернативних імен. Уникайте перенаправлення; досить 5–10 добре-хосенових ключових слів.
5. Уникайте індексування Дублікатного вмісту
Якщо ви дублікуєте елементи (наприклад, однакове звання в різних доменах), користувачі див. результати конфюзації. Виділіть на рівні додатку.
6. Пакетні операції для оновлення буксирування
При синхронізації багатьох елементів (наприклад, після відновлення хмари), завантажте їх в масиви 50–100, щоб уникнути блокування основної нитки. Використовуйте з масивом, не кілька одноразових дзвінків.
Оцінка продуктивності та акумулятора
Core Spotlight працює на фоновому режимі низької конфіденційності. Але поганий реалізація може злити акумулятор або деградацію системний продуктивність:
- – Тільки reindex, коли дані насправді зміняться, не на кожному запуску програми.
- Trottle large Operation – Використовуйте та (доступно ]) для атомних оновлень.
- ]Найясніший зображення – повинен бути невеликий (наприклад, 64×64 точок, JPEG стиснений). Великі зображення підвищують тиск пам'яті.
- Використовувати індекс за замовчуванням] – є достатнім для практично всіх додатків. Створення індексів, що призначені для користувача, рідко потрібна.
Документація з магнітним підсвічуванням] підкреслює, що індексування слід розглядати як «багате і забуте» – не синхронно чекати завершення зворотного виклику на головній нитки.
Тестування Core Spotlight інтеграції
Результати виявлення Spotlight можуть бути складними, оскільки вони не завжди з'являються негайно. Дотримуйтесь цієї стратегії тестування:
- ]Симулятор тестування – Використовуйте iOS Simulator (iOS 15 або пізніше). Після індексування, почекайте кілька секунд, потім витягніть екран Home для пошуку. Уважайтеся, що результати можуть зайняти більше в Simulator.
- Device test – Завжди тестуйте на фізичному пристрої. Показники Spotlight поводяться більш агресивно на реальному обладнанні.
- Зареєструвати індекс] – Використовуйте програму налаштувань: General → Spotlight Search → toggle your app off and on. Це очищає індекс і змушує свіжий старт.
- Верифікувати видалення – Після видалення елемента, забезпечення старого результату не з'являється. Іноді результати системних кешів; дати його до 30 секунд.
- Вишуканий консоль – Увімкнути за допомогою переїзду ] в аргументах Xcode.
Корисний ресурс WWDC 2015 «Запровадження Core Spotlight», який охоплює фундаментальні концепції, які досі застосовувані.
Висновок
Core Spotlight API є надійним, підзвітним інструментом, який може трансформувати, як користувачі взаємодіють з вашим додатком. Додаючи відповідні, доопрацьований вміст до індексу пошуку системи, ви забезпечуєте без тертя шлях від пошуку до вмісту – підвищити залучення та утримання. Старт невеликий: індексуйте свій найважливіший вміст спочатку, ретельно перевірте, а потім розширити покриття вторинних елементів. Пам'ятайте, що зберегти ваш індекс чистий, використовувати унікальні ідентифікатори послідовно, і обробляти роботу користувачів зворотного зв'язку. З кроками, викладеними в цій статті, ви готові доставити досвід пошуку першого класу, який відчуває рідну для iOS.
Для подальшого читання зверніться до офіційної Core Spotlight Framework Reference та Застосувати посібник з пошуку .