如何决定corespolight框架中哪一个最适合&NSUserActivity for Search Programming.
CoreSpotlight
- 不要求用户访问内容以便索引它(在任何点索引内容)
- 私有设备索引(你不使用核心聚光灯api使项目可公开搜索)
NSUserActivity
- 只能在用户在你的应用中执行活动时进行索引
- 公共/私有索引
- 索引导航点
除了@sash的回答,你可能想要观看WWDC 2015 Session 709 introduction App Search
的
-
userActivity
在application(_:continueUserActivity:restorationHandler:)
中有activityType == CSSearchableItemActionType
- 使用
CSSearchableItemAttributeSet
描述属性
CoreSpotlight
- 打算索引许多项目,使它们可搜索
- 用
CSSearchableItem.attributeSet
描述属性 - 配料
- 更新、删除
CoreSpotlight是用于在设备上索引的私有数据,你可以使用CoreSpotlight在你的应用程序中全面索引数据。
如果你正在构建或你有一个社交网络应用程序,例如,你想索引用户发送和接收的所有消息,CoreSpotlight是适合这项工作的工具。
NSUserActivity
- 索引当前活动的意图,使其在Spotlight中方便,以便我们可以拾取
- 用
contentAttributes
描述属性 - 允许内容在Apple cloud public中
eligibleForPublicIndexing
将NSUserActivity用于公共和私有内容,以及在应用程序内索引导航点。
现在有另一种风格的NSUserActivity,戴夫谈到的是公共索引。
关于NSUserActivity
-
becomeCurrent
用于切换以启动广播进程 - 我们可以使用
eligibleForHandoff = false
和eligibleForSearch = true
来获得与CoreSpotlight
几乎相同的效果 我们必须保持 - 我们不知道索引工作何时完成
NSUserActivity
对象直到索引工作完成设计用于协同工作
这些api虽然不同,但它们实际上是为了协同工作而设计的。
在同一个应用中,对于相同的内容,你可以采用多个api。
唯一要记住的是,对于从多个地方索引的项,您希望通过赋予它们相同的ID来连接这些项。
更多的资源
- App Search Programming
- 集成iOS系统搜索