随着项目的开发,功能需求越来越多,有的没什么卵用,有的倒是能提示不少逼格,这次接到的功能是实现IOS SpotLight搜索效果。

这个功能很早就有,主要功能是在IOS9系统界面下拉会出现搜索功能界面,在这里可以搜索关键信息,来展示应用内的内容,并且点击信息打开应用跳转具体页面等操作。这个功能还是很有用的,面对这越来越多的应用霸占你手机,给你的应用加上这么一个搜搜功能,还是有点与众不同,主要是提升逼格。看看效果图。

这里可以显示应用内的一些信息,挺丰富的,有图片,标题,副标题。

第一步:首先导入CoreSpotlight.framework框架

在需要实现的界面

#import <CoreSpotlight/CoreSpotlight.h>

比如你的应用是一个新闻类的,有列表页面,点击能进入新闻详情页面,你想在外面能搜索到新闻信息。

然后实现代码

- (void)setupSpotlight
{if ([UIDevice currentDevice].systemVersion.floatValue < 9.0) {return;}/*应用内搜索,想搜索到多少个界面就要创建多少个set ,每个set都要对应一个item*/CSSearchableItemAttributeSet *firstSet = [[CSSearchableItemAttributeSet alloc]initWithItemContentType:@"firstSet"];//标题firstSet.title = @"测试firstView";//详细描述firstSet.contentDescription = @"测试firstView哈哈哈哈哈哈哈";//关键字firstSet.contactKeywords = @[@"first",@"测试",@"firstView"];//设置图片//这里的url也必须是本地文件路径,而不是网络图片url
//    firstSet.thumbnailURL = [NSURL URLWithString:@"http://www.jf258.com/uploads/2014-09-11/195154600.jpg"];//也可以用这个图片加载方法firstSet.thumbnailData = UIImagePNGRepresentation([UIImage imageNamed:@"耳机"]);/*这里有个小细节:设置的图片展示的效果系统并不会给你处理,意思是说,如果你传了一张长方形的图片做封面icon,你在搜索列表上展示的icon就是长方形的,如果长宽比很大的话,很很难看,所以这里尽量保证图片趋近去正方形,使得展示效果好看点。或者在自己裁剪处理下趋近正方形。*/CSSearchableItemAttributeSet *secondSet = [[CSSearchableItemAttributeSet alloc]initWithItemContentType:@"secondSet"];secondSet.title = @"测试secondView";secondSet.contentDescription = @"测试secondView哈哈哈哈哈哈哈";secondSet.contactKeywords = @[@"second",@"测试",@"secondView"];secondSet.thumbnailData = UIImagePNGRepresentation([UIImage imageNamed:@"耳机"]);//UniqueIdentifier每个搜索都有一个唯一标示,当用户点击搜索到得某个内容的时候,系统会调用代理方法,会将这个唯一标示传给你,以便让你确定是点击了哪一,方便做页面跳转//domainIdentifier搜索域标识,删除条目的时候调用的delegate会传过来这个值CSSearchableItem *firstItem = [[CSSearchableItem alloc] initWithUniqueIdentifier:@"firstItem" domainIdentifier:@"first" attributeSet:firstSet];CSSearchableItem *secondItem = [[CSSearchableItem alloc] initWithUniqueIdentifier:@"secondItem" domainIdentifier:@"second" attributeSet:secondSet];NSArray *items = @[firstItem,secondItem];//把上面的设置item都添加进入[[CSSearchableIndex defaultSearchableIndex] indexSearchableItems:items completionHandler:^(NSError * _Nullable error) {if (error) {NSLog(@"失败%@",error);}else {NSLog(@"成功");}}];
}

做到这里,你就能够在系统界面下拉搜索到这个app里面保存好的信息,如果实现点击细心打开应用进入具体界面的操作,还必须实现下面的代理方法

第二步:在Appdelegate实现

-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler
{NSString *idetifier = userActivity.userInfo[CSSearchableItemActivityIdentifier];NSLog(@"%@",idetifier);UINavigationController *nav = (UINavigationController *)self.window.rootViewController;if ([idetifier isEqualToString:@"firstItem"]) {SpotlightViewController *firstVC = [[SpotlightViewController alloc]init];[nav pushViewController:firstVC animated:YES];}else if ([idetifier isEqualToString:@"secondItem"]){UIViewController *secondVC = [[UIViewController alloc]init];secondVC.title = @"第二个";secondVC.view.backgroundColor = [UIColor orangeColor];[nav pushViewController:secondVC animated:YES];}return YES;
}

SpotLight还提供了几个删除搜索索引的方法

- (void)deleteSearchableItemsWithIdentifiers:(NSArray<NSString *> *)identifiers completionHandler:(void (^ __nullable)(NSError * __nullable error))completionHandler{//根据标志来删除指定的保存设置
}- (void)deleteSearchableItemsWithDomainIdentifiers:(NSArray<NSString *> *)domainIdentifiers completionHandler:(void (^ __nullable)(NSError * __nullable error))completionHandler{}- (void)deleteAllSearchableItemsWithCompletionHandler:(void (^ __nullable)(NSError * __nullable error))completionHandler{
//删除所有的保存设置
}

IOS实现SpotLight搜索 让你的APP支持SpotLight搜索相关推荐

  1. SwiftUI 音乐和网络大全之网络音乐播放App支持iTunes搜索与播放(教程含源码)

    实战需求 SwiftUI 音乐和网络大全之网络音乐播放App支持iTunes搜索与播放(教程含源码) 本文价值与收获 看完本文后,您将能够作出下面的界面 实战代码 import SwiftUIstru ...

  2. 百度大字版APP支持语音搜索,老年人也能玩转互联网

    导读 随着互联网的迅速普及,越来越多的老年人也加入了使用手机大军,用手机出行.看新闻.学技能等.然而,很多老年人面临不会打字或者眼睛不方便等现实难题.如今,百度大字版APP给老年人上网提供了新思路,支 ...

  3. iOS开发指南:从零基础到App Store上架(第2版 )

    第一部分 基础篇 第1章 开篇综述 2 1.1 iOS概述 2 1.1.1 iOS介绍 2 1.1.2 iOS 6新特性 2 1.2 开发环境及开发工具 3 1.3 本书中的约定 4 1.3.1 案例 ...

  4. ios开发---URL Schemes 使用详解-app协议

    用原生 iOS 的人分两种,懂 URL Schemes 的和不懂的. 前者是「魔法师」,后者是「麻瓜」. URL Schemes 应用在 iOS 上已经很久了.对于使用者来说,在沙盒机制下的 iOS ...

  5. 开源项目—FLutter/iOS/Android编写的三个计算器APP

    前端时间使用Flutter,iOS,Android三种技术编写了三个相同功能的计算器APP,github地址,https://github.com/ThinkerJack/android-ios-fl ...

  6. 献给初学iOS的小盆友们------微博app项目开发之一项目初始化

    献给初学iOS的小盆友们--微博app项目开发之一 项目初始化 本人自学iOS也有七八个月了,不敢说学到很深入了,但也算入了门.此次微博app项目参考了传智播客培训教材,主要学习内容有架构思想,封装思 ...

  7. iOS应用内评价与购买三方APP组件

    2019独角兽企业重金招聘Python工程师标准>>> iOS应用内评价与购买三方APP组件 首先来说应用内评价组件,应用内评价组件是iOS10.3中新引入的功能.其封装在Store ...

  8. iOS安全之在模拟器中安装APP

    我一直在想iOS 模拟器如何安装 微博.UC等一些非系统自带的应用? Xcode提供了simctl命令来对模拟器进行各种操作,这个命令的路径是: /Applications/Xcode.app/Con ...

  9. 苹果App Store将推出搜索标签功能,App查找更精准

    App Store上已经拥有超过200万款应用,为了更好的方便用户搜索,苹果正在测试"标签"快捷搜索功能,让搜索结果更精准一些. 最近几周,一些iPhone用户使用App Stor ...

  10. iOS开发指南 从Hello World到App Store上架 第5版

    iOS开发指南 从Hello World到App Store上架 第5版 关东升 著 ISBN:9787115450630 包装:平装 开本:16开 正文语种:中文 出版社: 人民邮电出版社 出版时间 ...

最新文章

  1. pycharm 无法导包、无法导入模块(模块名不能含有连接符“-”)
  2. linux mysql数据库备份并删除前一分钟的数据
  3. Linux网卡命名规则
  4. 李善兰如何用汉字写公式 | 晚清高数课本长什么样?
  5. day16 java中的package和import
  6. lucene的简介及其工作方式的学习总结
  7. linux命令行安装vnc_centos 6.5 命令行方式可以用vnc连接吗
  8. NodeJs 实现 WebSocket 即时通讯(简单版)
  9. JS逆向---获取某知名外卖平台数据(_token)
  10. matlab 声纹识别,识别模型论文,关于基于MATLAB的声纹识别系统软件的设计相关参考文献资料-免费论文范文...
  11. ir2104s的自举电容_有关IR2104的自举电容和NMOS选择问题.docx
  12. python验证身份证号码_用Python校验身份证号码
  13. 波士顿学院的计算机科学,波士顿学院介绍_专业_费用_排名_申请-托普仕美国院校库...
  14. vsftpd命令详解
  15. 怎么恢复qq空间删除的日志文件呢
  16. 宝塔绑定域名访问不了_千字长文教你使用 宝塔面板 快速搭建网站
  17. 微信客服消息跳转h5,回复关键字,跳转小程序方式全集
  18. 通过Python实现NC文件转GeoTiff格式
  19. 中国女排3-2力克巴西,朱婷、张常宁等主力回归,下次对阵荷兰,排名会发生怎样的变化?
  20. lssvm回归 matlab,用lssvm做回归预测,预测的结果偏差很大,如何进行参数寻优

热门文章

  1. 深度学习、目标检测相关博客链接
  2. python搜索网页关键词_新闻网页Python爬虫(jieba分词+关键词搜索排序)
  3. 阿齐索-对接淘宝第三方平台
  4. PHP毕业设计项目作品源码选题(13)学校排课和选课系统毕业设计毕设作品开题报告
  5. 程序化广告(2):程序化广告的参与者
  6. hardware用u盘起动_u盘启动dos最简单的的小方法
  7. 2022年上半年中国企业员工主动离职率大幅下降至6%;三成以上中国企业大部分高管岗位没有后备人选 | 美通社头条...
  8. HDS USPV-VSP HP XP24000 Raid崩溃阵列损坏多盘损坏数据恢复方法思路分享
  9. 表单的js验证框架,只提供提示信息及正则表达式即可自动验证及提示
  10. (转)如何将Sklearn数据集Bunch格式转换为Pandas数据集DataFrame?