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 = false
和eligibleForSearch = true
来获得与CoreSpotlight
几乎相同的效果 - 我们必须保持
NSUserActivity
对象,直到索引工作完成 - 我们不知道索引工作何时结束
旨在共同努力
这些API虽然截然不同,但其devise却是一起工作的。
在相同的应用程序相同的内容,你可以采用多个API。
唯一要记住的是对于从多个地方索引的项目,要通过给它们相同的ID来连接这些项目。
更多资源
- 应用search编程
- 与iOS系统search集成