CoreSpotlight 系统搜索栏

iOS 9 Search API概述

提供了两种索引方式:

  1. 私有设备索引(private on-device index)。
    每一台iOS设备都有一个私有的索引,这个索引从来不与Apple或者在设备间共享。私有设备索引上条目只有用户可以搜到。此索引可以通过[CSSearchableIndex defaultSearchableIndex]得到。
  2. Apple的服务器端索引。服务器索引只存储网站上被恰当的标志过的数据。

iOS9的新Search API主要有以下三点:
1. 在NSUserActivity类中提供了新的方法和属性来创建针对用户活动的索引项,这些活动包括如打开了导航点,或创建并查看内容等事件。
2. Core Spotlight框架,供应用在私有设备索引上创建相关内容的索引,并实现指向应用内的深层链接。
3. Web标记,让应用相关的网页内容变得可被搜索,从而丰富用户的搜索体验。

除了核心Search API, Apple还推荐使用下面三种技术和Search API一起使用,来提高用户搜索体验:

  • 通用链接。iOS中9之后,使用基于标准的HTTP或HTTPS的通用链接,来取代自定义URL方案。通用链接可以支持所有用户,不管他们是否安装了应用(如果用户已经安装了应用,链接直接打开应用;如果他们没有安装应用,链接会用Safari打开你的网站)。这篇博文介绍了通用链接的概念。
  • 智能应用横幅。当用户使用Safari浏览器访问你的网站的时候,智能应用横幅广告可以打开你的应用,或有机会让用户下载你的应用。
    Handoff。Handoff可以让用户可以从一台设备到另一台设备继续工作。

Core Spotlight 框架

Core Spotlight框架用来索引应用内的内容。它创建的索引存储在设备上,不与Apple共享,也不能被其他应用或者设备访问。
Apple的指南中特别提到Core Spotlight创建的索引最好在几千的数量级别之下。索引太多很有可能会带来性能问题。

索引的创建是通过两个类完成的:
1. CSSearchableItemAttributeSet:索引属性集合,也即是索引的内容本身。集合中可以存储以下属性:title, contentDescription, thumbnailData, rating, keywords.下面这张图显示了Spotlight是如何通过这些属性展示搜索结果的:
2. CSSearchableItem:用来表示一个被索引的条目,通过来可以关联到应用内的记录。CSSearchableItem依赖于,它在构建的时候需要传入一个CSSearchableItemAttributeSet对象。

代码如下:https://github.com/JolieYa/BYCoreSpotlight
参考:https://www.jianshu.com/p/b55172f0767b

猜你喜欢

转载自blog.csdn.net/weixin_40873814/article/details/78951406