В чем основное различие между использованием платформы NSUserActivity и CoreSpotlight для программирования поиска? Как выбрать среди них?

Как решить, какой из фреймворков CoreSpotlight и NSUserActivity для программирования поиска наиболее подходит.


person Niraj    schedule 09.10.2015    source источник
comment
Посмотрите видео WWDC 2015 Intro Introductioning Search API — оно дает отличный обзор и дает ответ на этот самый вопрос: developer.apple.com/videos/play/wwdc2015-709   -  person JRG-Developer    schedule 09.10.2015
comment
Это тоже очень полезно: developer.apple.com/library/prerelease/ios/documentation/   -  person Niraj    schedule 09.10.2015
comment
В отличие от NSUserActivity, Core Spotlight не требует от пользователей посещения контента для его индексации.   -  person onmyway133    schedule 07.01.2016


Ответы (2)


ЯдроВ центре внимания

  • не требует от пользователей посещения контента для его индексации (индексировать контент в любой момент)
  • частный индекс на устройстве (вы не используете Core Spotlight API, чтобы сделать элементы общедоступными для поиска)

Нсусерактивити

  • может индексировать только когда пользователи выполняют действия в вашем приложении
  • публичное/частное индексирование
  • индексация точек навигации
person sash    schedule 17.11.2015

В дополнение к ответу @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.

Единственное, что нужно помнить, это то, что для элементов, которые проиндексированы из нескольких мест, вы хотите связать эти элементы, присвоив им один и тот же идентификатор.

Дополнительные ресурсы

person onmyway133    schedule 09.01.2016