search编程使用NSUserActivity和CoreSpotlight框架之间的基本区别是什么? 如何select它们?

如何确定在CoreSpotlight框架和NSUserActivity for Search Programming中哪一个最适合。

CoreSpotlight

  • 不要求用户访问内容以便索引它(索引内容在任何点)
  • 私人设备上索引(您不使用Core Spotlight API来公开search项目)

NSUserActivity

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

除了@sash的回答之外,您还可以观看WWDC 2015 Session 709简介App Search

一样

  • application(_:continueUserActivity:restorationHandler:) userActivity application(_:continueUserActivity:restorationHandler:)activityType == CSSearchableItemActionType
  • 利用CSSearchableItemAttributeSet来描述属性

差异

CoreSpotlight

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

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

如果您正在构build应用程序,或者您有一个社交networking应用程序,并且您想索引用户发送和接收的所有消息,则CoreSpotlight是正确的工具。

NSUserActivity

  • 意图为当前活动编制索引,使其在Spotlight中便利,以便我们可以拿起
  • contentAttributes描述属性
  • 允许contentForPublicIndexing中的Apple Cloud公开

使用NSUserActivity公共和私人内容,以及索引您的应用程序内的导航点。

现在还有另外一种Dave所提到的NSUserActivity,就是Public Indexing。

更多关于NSUserActivity

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

旨在共同努力

这些API虽然截然不同,但其devise却是一起工作的。

在相同的应用程序相同的内容,你可以采用多个API。

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

更多资源

  • 应用search编程
  • 与iOS系统search集成