Вступ

Сучасні мобільні користувачі очікують миттєвий доступ до інформації. Інтеграція системи-рівень пошук у додатку iOS різко знижує тертя, що дозволяє користувачам знайти вміст без відкриття вашого додатку першим. Core Spotlight API - це вбудована рамка Apple для індексування вмісту додатків в глобальний прожектор пристрою. Коли користувач шукає з домашнього екрану або в рамках перегляду, ваші дані застосунків з'являються поряд з результатами розсилки, повідомлень та інших системних додатків. Ця стаття забезпечує комплексний, виробничо-прочитаний посібник для реалізації Core Spotlight, охоплює все з базового індексування для глибокого зв'язку та продуктивності.

Розуміння Core Spotlight та його переваги

Core Spotlight - це легкий, конфіденційність є безпечною системою індексування. Він повністю живе на ‐device - немає даних, що не залишає телефон користувача, якщо ви явно використовуєте CloudKit. Це робить його ідеальним для особистого вмісту, таких як ноти, контакти, документи, або будь-які дані, що використовуються користувачем. Основні переваги включають:

  • Increased actionment – Користувачі, які виявляються, вони можуть бути забуті, підвищуючи повторне використання.
  • Навігація безшовної – Натискання результату пошуку можна відкрити додаток безпосередньо до відповідного екрану.
  • Оффлайн Можливість] – Індексовані елементи залишаються пошуковими, навіть без підключення до Інтернету.
  • Для реалізації – API невеликий, добре довідковий і легко інтегрується з існуючими моделями даних.

Core Spotlight працює поряд з NSUserActivity індексування, але для статичного або часто оновленого вмісту, прямий індексування CSSearchableItem дає вам тонкий контроль.

Передумови та налаштування

Перед тим як писати код, забезпечте свій проект правильно:

  1. Ваше додаток має бути цільове iOS 9 або пізніше ( API дебютував з iOS 9).
  2. Увімкнути Core Spotlight] можливість в Xcode – під ]Підігрів та підсилювач; Ємності додано назву «Core Spotlight». Це часто автоматично входить при імпорті каркасу.
  3. Імпорт основних засобів 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 можуть бути складними, оскільки вони не завжди з'являються негайно. Дотримуйтесь цієї стратегії тестування:

  1. ]Симулятор тестування – Використовуйте iOS Simulator (iOS 15 або пізніше). Після індексування, почекайте кілька секунд, потім витягніть екран Home для пошуку. Уважайтеся, що результати можуть зайняти більше в Simulator.
  2. Device test – Завжди тестуйте на фізичному пристрої. Показники Spotlight поводяться більш агресивно на реальному обладнанні.
  3. Зареєструвати індекс] – Використовуйте програму налаштувань: General → Spotlight Search → toggle your app off and on. Це очищає індекс і змушує свіжий старт.
  4. Верифікувати видалення – Після видалення елемента, забезпечення старого результату не з'являється. Іноді результати системних кешів; дати його до 30 секунд.
  5. Вишуканий консоль – Увімкнути за допомогою переїзду ] в аргументах Xcode.

Корисний ресурс WWDC 2015 «Запровадження Core Spotlight», який охоплює фундаментальні концепції, які досі застосовувані.

Висновок

Core Spotlight API є надійним, підзвітним інструментом, який може трансформувати, як користувачі взаємодіють з вашим додатком. Додаючи відповідні, доопрацьований вміст до індексу пошуку системи, ви забезпечуєте без тертя шлях від пошуку до вмісту – підвищити залучення та утримання. Старт невеликий: індексуйте свій найважливіший вміст спочатку, ретельно перевірте, а потім розширити покриття вторинних елементів. Пам'ятайте, що зберегти ваш індекс чистий, використовувати унікальні ідентифікатори послідовно, і обробляти роботу користувачів зворотного зв'язку. З кроками, викладеними в цій статті, ви готові доставити досвід пошуку першого класу, який відчуває рідну для iOS.

Для подальшого читання зверніться до офіційної Core Spotlight Framework Reference та Застосувати посібник з пошуку .