使用 NSUserActivity 和 CoreSpotlight 框架进行搜索编程之间的基本区别是什么?如何在其中选择?



如何决定corespolight框架中哪一个最适合&NSUserActivity for Search Programming.

CoreSpotlight

  • 不要求用户访问内容以便索引它(在任何点索引内容)
  • 私有设备索引(你不使用核心聚光灯api使项目可公开搜索)

NSUserActivity

  • 只能在用户在你的应用中执行活动时进行索引
  • 公共/私有索引
  • 索引导航点

除了@sash的回答,你可能想要观看WWDC 2015 Session 709 introduction App Search

  • userActivityapplication(_:continueUserActivity:restorationHandler:)中有activityType == CSSearchableItemActionType
  • 使用CSSearchableItemAttributeSet描述属性

CoreSpotlight

  • 打算索引许多项目,使它们可搜索
  • CSSearchableItem.attributeSet描述属性
  • 配料
  • 更新、删除

CoreSpotlight是用于在设备上索引的私有数据,你可以使用CoreSpotlight在你的应用程序中全面索引数据。

如果你正在构建或你有一个社交网络应用程序,例如,你想索引用户发送和接收的所有消息,CoreSpotlight是适合这项工作的工具。

NSUserActivity

  • 索引当前活动的意图,使其在Spotlight中方便,以便我们可以拾取
  • contentAttributes描述属性
  • 允许内容在Apple cloud public中eligibleForPublicIndexing

将NSUserActivity用于公共和私有内容,以及在应用程序内索引导航点。

现在有另一种风格的NSUserActivity,戴夫谈到的是公共索引。

关于NSUserActivity

  • becomeCurrent用于切换以启动广播进程
  • 我们可以使用eligibleForHandoff = falseeligibleForSearch = true来获得与CoreSpotlight几乎相同的效果
  • 我们必须保持NSUserActivity对象直到索引工作完成
  • 我们不知道索引工作何时完成

设计用于协同工作

这些api虽然不同,但它们实际上是为了协同工作而设计的。

在同一个应用中,对于相同的内容,你可以采用多个api。

唯一要记住的是,对于从多个地方索引的项,您希望通过赋予它们相同的ID来连接这些项。

更多的资源

  • App Search Programming
  • 集成iOS系统搜索

最新更新