更加智能的搜索方案——iOS9搜索功能新api
一、引言
iOS9中为我们提供了许多新的api,搜索功能的加强无疑是其中比较显眼的一个。首先,我们先设想一下:如果在你的app中定义一种标识符,在siri和搜索中,可以用过这个标识符搜索到你的app,是不是很棒?不,这还差得远,你可以定义任意的数据,使其在搜索和siri中可以快速检索到,这样的搜索功能是不是非常酷?不,还有更cool的,你甚至可以在你的网站中添加一些标志,使apple的爬虫可以检索到,那样,即使用户没有安装你的app,也可以在搜索中获取到相应的信息,这太强大了,对吧。
二、3种全新的搜索模式
1、NSUserActivity
我们可以在项目中使用相应的函数来添加一些用户的活跃元素,使我们可以在搜索中通过搜索这样的活跃元素展现我们的app。例如:
1 2 3 4 5 6 7 8 9 10 |
|
在下面的函数中,我们可以处理用户点击搜索后的回调:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
TIP:这种方式添加的关键字搜索,必须创建全局变量,否则无法进行搜索:
2、CoreSpotlight
CoreSpotlight是一种更加自由的搜索方式,可以通过添加类似item的模型,将app中的数据展示在搜索栏中,CoreSpotlight框架类似提供了一些增、删、改、查的操作,可是使我们自由的进行搜索属性的设置。
(1)认识3个类
在iOS9中,新增加了3个类,通过对这三个类的操作与配合,我们可以轻易的在app中添加CoreSpotlight搜索的功能。
CSSearchableItemAttributeSet:设置类,这个类用于设置搜索标签里的icon,内容,图片等。主要用法如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
|
CSSearchableItem:搜索标签类,通过这个类,来创建响应的搜索标签。主要内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
CSSearchableIndex:这个类,我个人理解,类似一个manager的作用,通过它对标签进行增、删、改、查等操作:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
(2)一个小例子
下面,我们通过一个小例子来应用下CoreSpotlight的搜索功能。
首先,需要在项目中导入如下库:
实现如下代码:
1 2 3 4 5 6 7 8 9 10 |
|
我们在搜索中输入haha或者123效果如下:
CoreSpotlight的搜索回调和NSUserActivaty一样,只是区分id的方式有所不同:
1 2 3 4 5 6 7 8 9 10 11 |
|
3、Web Markup
这个功能与我们app开发关系不大,但是对我app的推广却至关重要,这项技术可以让我们的app关联一个网站,apple通过爬虫来获取我们规定的一些标签值,无论用户是否安装了app,在搜索时,都可以展示出相关信息,因为这项功能主要关联前端技术,需要了解的可以参看:App Search Programming Guide。
三、结语
在我参考的许多相关文章中,都一致建议,iOS9的搜索功能固然强大,然而滥用会造成垃圾信息的泛滥,这样的结果一定会适得其反,作为开发者,我们需要将最合适,最简洁的信息推送到用户的面前。另外,文章有疏漏和错误之处,欢迎指正。