Как решить, какой из них наиболее подходит среди рамок CoreSpotlight & NSUserActivity для программирования поиска.В чем основное отличие использования NSUserActivity & CoreSpotlight для программирования поиска? Как выбрать из них?
ответ
CoreSpotlight
- не требует от пользователей, чтобы посетить содержание, чтобы индексировать (содержание индекса в любой точке)
- частный индекс на устройстве (не использовать Ключевых API, Spotlight, чтобы сделать пункты публично для поиска)
NSUserActivity
- индекс может только пользователей на форма деятельности в приложении
- государственные/частные индексации
- индексации навигационных точек
В дополнение к @sash ответ «s, вы можете смотреть WWDC 2015 Session 709 Introducing App Search
То же
userActivity
вapplication(_:continueUserActivity:restorationHandler:)
имеетactivityType == CSSearchableItemActionType
- Использование
CSSearchableItemAttributeSet
для описания атрибуту
Различия
CoreSpotlight
- Намерены для индексации много элементов, что делает их доступными для поиска
- Опишите атрибут с
CSSearchableItem.attributeSet
- пакетирования
- обновления, удаление
CoreSpotlight для частных данных, которые индексируются на устройстве, и вы можете использовать CoreSpotlight всесторонне индексные данные в приложении.
Если вы строите или у вас есть приложение для социальных сетей, и вы хотели бы проиндексировать все сообщения, отправленные и полученные пользователем, CoreSpotlight является правильным инструментом для работы.
NSUserActivity
- Намерение для индексации текущей деятельности, что делает его удобным в центре внимания, так что мы можем подобрать
- Опишите атрибут с
contentAttributes
- Разрешить содержимое, чтобы быть в Apple, облака общественности в
eligibleForPublicIndexing
Используйте NSUserActivity для публичного и частного контента, а также для индексирования точек навигации внутри вашего приложения.
Теперь есть еще один аромат NSUserActivity, который Дэйв затронул, что является публичным индексированием.
Подробнее о NSUserActivity
becomeCurrent
для хэндовера, чтобы начать процесс- вещания Мы можем использовать
eligibleForHandoff = false
иeligibleForSearch = true
, чтобы получить почти такой же эффект, какCoreSpotlight
- Мы должны держать
NSUserActivity
объекты вокруг до окончания работы индекса - Мы не знаем, когда индекс работа заканчивает
Предназначена для совместной работы
Этих API-интерфейсов, а различны, они действительно предназначены для совместной работы.
В том же приложении для одного и того же контента вы можете использовать несколько API.
Единственное, что нужно помнить, - это элементы, индексированные из нескольких мест, которые вы хотите связать с этими элементами, указав им одинаковый идентификатор.
Больше ресурсов
Смотреть WWDC 2015 видео "Введение в API Поиска" - это дает отличный обзор и ответ на этот самый вопрос: https: //developer.apple.com/videos/play/wwdc2015-709/ –
Это тоже очень полезно: https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/AppSearch/in dex.html # // apple_ref/doc/uid/TP40016308 – Niraj
«В отличие от NSUserActivity, Core Spotlight не требует, чтобы пользователи посещали контент, чтобы индексировать его» – onmyway133