iOS CoreSpotlightSearch探索之道

AppleStore搜索结果示例

前言

看到上图的搜索结果,找完了文档都没有发现这个效果怎样实现,我也是醉了,然后不小心看到下图,我相信有方法能实现,只是现在还没有发现!

淘票票搜索显示.png

研究了几天,还是让我找到了结果,苹果还是不行啊,还是我不行?反正一路过来,不容易!!自己想实现的效果,含泪也要实现出来—.—


最后实现的可用全部类型.png

下面就是探索之道,喜欢看代码的就直接先上代码看吧
CoreSpotlightSearchDemo

1、普通类型

一般应用搜索出来的结果都是一图片,一标题,一内容


简书的搜索结果

但是如果想实现没有图片呢?如下图:


没有实现的,有点难看吧,至少有应用logo吧!
   // 把一个空数据赋给图片对象,然后系统好像判断了如果没有图片,则不显示?
    attributedSet.thumbnailData = [NSData new];

2.右上角带有时间

右上角带有时间的类型,一直看文档和网上的教程,都没有发现时间的设置,一般都是简单提一下怎么设置然后显示,不求甚解?!


带有时间的
    // 显示时间的必要条件
    attributedSet.contentType = (NSString*)kUTTypeMessage;
    attributedSet.contentCreationDate = [NSDate date];

3.显示电话

下图是实现的电话显示和系统通讯录的搜索结果比较,系统有FaceTime的会显示,没有就隐藏,同时有发送短信的功能。但是系统好像没有开放这么多功能给开发者,只是给了电话的显示。而且,电话设置多个号码,但是点击时,直接打数据数组的第一个号码。最后是图标也不一样,系统的电话图标是实心的,实现的却是空心,累都凉了。

    // 显示的必要条件,是一个数据,可以有多个号码,但只会读第一个电话
    attributedSet.phoneNumbers = @[@"12345678",@"42535353"];
    attributedSet.supportsPhoneCall = @1;
实现的电话类型png
通讯录.png
有多个号码系统打电话则显示多个选择.PNG

4.带有位置导航的

点击导航会跳转到地图,然后系统自动导航(代码里写好了经纬度),系统的地图都没有显示这个图标出来,就是这样了。提醒的是,如果你点击导航图标默认是跳转到系统的地图,然后是你当前地点到目标地点的线路规范,然后就可以导航了。如果点击cell其它内容,则跳转回应用,自己实现逻辑。


位置导航类型.png
    // 显示的必要条件,经纬度
    attributedSet.longitude = @113.270793;
    attributedSet.latitude = @23.135308;
    attributedSet.supportsNavigation = @1;

5.带有星星评价的

这个测试了很久才显示出来的,心累了。
星星的显示,只能是整数个或者半个星星,最大是5,就是显示5星。星星后面还可以星星的评价说明,这个起点缀作用啦!


带星星评价
 //要选中对应的媒体类型
    attributedSet.contentType = (NSString*) kUTTypeAudio;
//    attributedSet.contentType = (NSString*) kUTTypeMovie;
    attributedSet.rating = @3.5;
    attributedSet.ratingDescription = @"raign44";

6.音乐

我实现出来的音乐跟系统的音乐显示完全不一样,不清楚是我这边没有实现,还是苹果没有开放接口。我感觉是苹果没有开放的原因,如果你实现了一定要告诉我,我会知错就改的。

音乐类型
苹果音乐.PNG
    attributedSet.contentType = (NSString*) kUTTypeAudio;
    attributedSet.album = @"album";
    attributedSet.lyricist = @"lyricist";
    attributedSet.composer = @"composer";
    attributedSet.artist = @"artist";

7.文档类型【未实现】

这个也没有测试出来,等高手。文档类型带的是时间的修复。找到字段,设置了,但没有显示出来。下面是印象笔记和有道云笔记实现的效果。


文档类型.png

8.邮件类型【未实现】

系统的邮件类型显示分三行的。第一行是发件人,第二行是主题,第三行是内容。但是我还是没有找到苹果实现的效果。QQ邮箱显示的也是三行,但是他用了一个技巧,就是内容用了一个换行\\n,让内容一分为二,这样的效果我只能说将就了,但系统的实现我也没有找到,知道的麻烦也通知一下我,我一个星期在嘛呀。。

苹果邮件.PNG

QQ邮箱搜索显示效果.png

9.搜索关键字?

最特别的是,我在搜索很多关键字时,发现京东每一次都出现,并且关键字也命中啦!如下图:


京东搜索.png

当时我就疑惑,这tm的怎么实现的!!!x爆天了!查看了系统的文档,都没有发现这样的搜索接口。然后想到 关键字的搜索,比如用"*" "?",但是发现系统是无法代替换搜索的。最后想到京东覆盖了非常多的关键字,就是大量的注入关键字!!。这招真服了!!

关于大量注入,我测试了一万条,因为系统的索引建立是在子线程执行,然后其实也没有什么大问题。

10.其它类型

有了前面的类型,想要让你搜索结果显示的不一样,就是综合其它效果,做出自己漂亮吸引的形式啦!!
如下是京东的商品显示,效果感觉还可以。当然,其它应用应该找到合适自己的显示,或好的让用户点击的欲望吧!


京东搜索结果多行显示.png

11.言外之意

从前面就可以看出,CSS(CoreSpotlightSearch)有非常多,非常复杂的知识,很多需要大家了解搜索吧。比如可以设置搜索关键字@property(nullable, copy) NSArray<NSString*> *keywords; ,也可以设置每一条搜索的过期时间@property (copy, null_resettable) NSDate * expirationDate,当然还可以删除某条记录或全部,关于更新,我发现每一条记录是根据UniqueIdentifier,如果发现相同的UniqueIdentifier,则系统会覆盖原来的内容,从而达到更新的作用。还有点击搜索结果,跳转回应用做逻辑处理,大家可以参考本文结尾的参考文章来学习,在这里就不多言了。

12.写写总结

代码写的越多,对人生的感悟越多,对代码也产生了敬畏之道。有人说,代码产生的是对用户的作用,不要一言追求重构,新技术。一个小小的功能,也许就是用户继续使用你的App的惟一原因,而不是这一次你重构了多少代码。

所以,在使用CSS时,应该考虑怎么为用户提供优质的搜索结果,而不是竞争或出风头!

因为用户有权选择不显示应用的搜索结果:


关闭应用搜索结果.png

但我在想,我安装了200+应用,有时候都不想显示,苹果没有一个全部关闭的按钮,我想这不是苹果不知道,而是不“为”!就是希望用户保留搜索,一个大数据的时代!!

当然,我们在使用时,是不是也要关心一直搜索隐私问题,苹果说了(他说了算):


Spotlight隐私说明.png

参考

喜欢的点赞一个,有问题先看代码吧,欢迎留言交流!
Demo: CoreSpotlightSearchDemo


注:本文首发于 iHTCboy's blog,如若转载,请注明来源。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,290评论 6 491
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,107评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,872评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,415评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,453评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,784评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,927评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,691评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,137评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,472评论 2 326
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,622评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,289评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,887评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,741评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,977评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,316评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,490评论 2 348

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,059评论 4 62
  • Swift版本点击这里欢迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh阅读 25,325评论 7 249
  • 三殿下和凤九都担心这个失去理智的太子大爆发,那时天族可能没法给青丘交代,青丘可能没法给四海八荒交代。当他们听到侍卫...
    寻找十年的足迹阅读 12,177评论 3 23
  • 对于许多刚踏入职场的菜鸟来说,如何在第一天报到就能显得从梦能干,给别人留下好的印象分 下面教大家几个小窍门,仅供参...
    职场桂先生阅读 160评论 0 0
  • 思维空性 这段时间情绪有点不太稳定,总是觉得别人做都事都太慢,都不如自己的意。看谁都不顺眼,思维空性,一切都源于自...
    棋心118阅读 132评论 0 0