【iOS9系列】- CoreSportlight内容索引的使用
【iOS9系列】- CoreSportlight内容索引的使用
前言
在iOS9中新增加了的CoreSportlight内容索引,这个还是比较实用的,当我们的App比较多的时候,我们会实用iOS系统的自带的搜索栏的“搜索”功能(iOS很方便的下拉即可呼出这个选项),去查找APP应用,短信,或者其他内容,这是很方便的,那么我们能不能直接在“搜索”应用内部的东西呢,这样也方便用户查找,同时也有提提高我们APP的出镜率,特别是笔记类的应用,这个很方便用户不进入APP就可以直接进行查找的操作的。
注:本文Demo代码 , 完整的Demo代码下载,欢迎Star。
iOS系统中使用“搜索功能”的截图
1.1集成CoreSportlight
集成CoreSportlight需要导入头文件#import <CoreSpotlight/CoreSpotlight.h>
,然后创建一个数组,里面元素的类型是CSSearchableItem *
,把我们希望被系统索引到的东西,添加到数组中。
同时要能满足数组的的要求,我们需要通过CSSearchableItemAttributeSet
来分别设置title
:标题,contentDescription
:描述信息,thumbnailData
:图片,类型是NSData。
然后利用[[CSSearchableItem alloc]initWithUniqueIdentifier:model.sId domainIdentifier:@"coreSportlightDemo" attributeSet:csSet];
来把CSSearchableItemAttributeSet
封装成CSSearchableItem
,同时UniqueIdentifier
字段,是我们的信息被搜索到后,拿到被点击条目唯一值
最后
[[CSSearchableIndex defaultSearchableIndex]indexSearchableItems:(NSArray<CSSearchableItem *> *)items completionHandler:(void (^ __nullable)(NSError * __nullable error))completionHandler
,来把需要索引的信息注入到系统中,这样系统就会“搜索”到我们APP中的内容了。
NSMutableArray<CSSearchableItem *> *items = [NSMutableArray array];
for (NewsModel *model in self.dataArray) {
CSSearchableItemAttributeSet *csSet = [[CSSearchableItemAttributeSet alloc]initWithItemContentType:@"test"];
csSet.title = model.title;
csSet.contentDescription = model.webUrl;
csSet.thumbnailData = UIImagePNGRepresentation([UIImage imageNamed:model.imgUrl]);
CSSearchableItem *csItem = [[CSSearchableItem alloc]initWithUniqueIdentifier:model.sId domainIdentifier:@"coreSportlightDemo" attributeSet:csSet];
[items addObject:csItem];
}
//将值注入到系统中
[[CSSearchableIndex defaultSearchableIndex]indexSearchableItems:items completionHandler:^(NSError * _Nullable error) {
if (error) {
NSLog(@"had error:%@",error);
}
}];
完成好以上的操作后,我们运行APP,然后把APP进入到后台,在“搜索”界面中输入title字段的内容,比如“osc”,系统就会匹配到我们APP的内容,点击后,就可以进入到我们的APP了。
1.2使用系统回调
我们点击了被系统搜索出的条目后,想知道具体信息,怎么办呢?
在AppDelegate
中添加方法- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray * __nullable restorableObjects))restorationHandler
,我们打印引字典信息,发现只有唯一的Key值kCSSearchableItemActivityIdentifier
,打印信息,就会发现这就是我们前面所设置的UniqueIdentifier
字段了,当然,什么都不设置,默认是会进入APP的。
-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler{
NSString *sId = userActivity.userInfo[@"kCSSearchableItemActivityIdentifier"];
NSLog(@"%@--:%@",userActivity.userInfo,sId);
return YES;
}
注:本文Demo代码 , 完整的Demo代码下载,欢迎Star。
作者:Darren
微博:@IT_攻城师
github:@Darren90
博客:http://www.cnblogs.com/fengtengfei/
欢迎您的访问...
最新文章
- iOS6_自动约束 Constraints
- hibernate中一对多关系中的inverse,cascade属性
- POJ3013 Big Christmas Tree[转换 最短路]
- Tesseract-OCR 字符识别---样本训练 [转]
- WPF开发时光之痕日记本(一)——富文本编辑器
- 二模 (2) day2
- js中的隐式转换
- 2014年百度之星程序设计大赛 - 资格赛 第二题 Disk Schedule
- PLSQL触发器
- Linux系统目录结构介绍
- 如何通过免费开源ERP Odoo建立你的团队, 销售过程和目标
- __x__(30)0908第五天__导航条的练习 <;div>;版本
- hdu 2036 求多边形面积 (凸、凹多边形)
- linux 查看端口占用
- Kubernetes学习之路(二十二)之Pod资源调度
- 什么是.Net, IL, CLI, BCL, FCL, CTS, CLS, CLR, JIT
- Android设备广告投放解决方案——大量网络图片、多个网络视频的轮播、缓存与更新
- 使用cocos创建的项目,如何进行源码调试?
- java内存分配策略
- 黄聪:国内com域名转移到Godaddy详细教程(转)