Как решить, какой из фреймворков CoreSpotlight и NSUserActivity для программирования поиска наиболее подходит.
В чем основное различие между использованием платформы NSUserActivity и CoreSpotlight для программирования поиска? Как выбрать среди них?
Ответы (2)
ЯдроВ центре внимания
- не требует от пользователей посещения контента для его индексации (индексировать контент в любой момент)
- частный индекс на устройстве (вы не используете Core Spotlight API, чтобы сделать элементы общедоступными для поиска)
Нсусерактивити
- может индексировать только когда пользователи выполняют действия в вашем приложении
- публичное/частное индексирование
- индексация точек навигации
В дополнение к ответу @sash вы можете посмотреть WWDC 2015 Session 709 Introduction Поиск приложений
То же самое
userActivity
вapplication(_:continueUserActivity:restorationHandler:)
естьactivityType == CSSearchableItemActionType
- Используйте
CSSearchableItemAttributeSet
для описания атрибута
Различия
ЯдроВ центре внимания
- Предназначен для индексации многих элементов, что делает их доступными для поиска
- Опишите атрибут с помощью
CSSearchableItem.attributeSet
- дозирование
- обновить, удалить
CoreSpotlight предназначен для личных данных, которые индексируются на устройстве, и вы можете использовать CoreSpotlight для комплексной индексации данных в вашем приложении.
Если вы создаете или у вас есть приложение для социальной сети, например, и вы хотите проиндексировать все сообщения, которые пользователь отправил и получил, CoreSpotlight — правильный инструмент для этой работы.
Нсусерактивити
- Намерение индексировать текущую активность, делая ее удобной в Spotlight, чтобы мы могли подобрать
- Опишите атрибут с помощью
contentAttributes
- Разрешить общедоступный контент в облаке Apple в
eligibleForPublicIndexing
Используйте NSUserActivity как для общедоступного, так и для частного контента, а также для индексации точек навигации внутри вашего приложения.
Теперь есть еще одна разновидность NSUserActivity, которую затронул Дэйв, а именно общедоступное индексирование.
Подробнее о NSUserActivity
becomeCurrent
для Handoff, чтобы начать процесс вещания- Мы можем использовать
eligibleForHandoff = false
иeligibleForSearch = true
, чтобы получить почти тот же эффект, что иCoreSpotlight
. - Мы должны сохранить
NSUserActivity
объектов, пока работа над индексом не будет завершена. - Мы не знаем, когда закончится индексная работа
Разработаны для совместной работы
Эти API, хотя и разные, на самом деле предназначены для совместной работы.
В одном приложении для одного и того же контента вы можете использовать несколько API.
Единственное, что нужно помнить, это то, что для элементов, которые проиндексированы из нескольких мест, вы хотите связать эти элементы, присвоив им один и тот же идентификатор.
Дополнительные ресурсы