iOS 9 Spotlight搜索 OC版
介绍:
在WWDC
2015会议上,苹果官方公布了iOS9。除开许多新的特性和增强功能,这次升级也给了开发者们一个机会让他们的app里的内容能通过Spotlight
搜索功能被发现和使用。在iOS9中可用的新APIs允许你去索引APP里面的内容或者界面状态,通过Spotlight来让用户使用。
这些新的搜索APIs的三大组件为:
* NSUserActivity 类, 它是为可被看见的APP内容而设计的
* Core Spotlight 框架, 为任何APP内容而设计的
* web markup,为这一类型的APP设计的,就是APP的内容在某个网站上有镜像
在这个教程里,我将会向你展示可以怎样在你的应用中使用NSUserActivity类以及 Core Spotlight 框架。
准备工作:
这个教程需要你运行在Xcode7 和OSX 10.10、iOS9.0系统或更后的系统
步骤:
#import <CoreSpotlight/CoreSpotlight.h>
2.创建搜索属性对象
CSSearchableItemAttributeSet * attributeSet = [[CSSearchableItemAttributeSet alloc] initWithItemContentType:@""];
3.设置搜索属性
//搜索显示的名称
attributeSet.title = obj.name;
//显示的描述
attributeSet.contentDescription = obj.desc;
//搜索关键字
attributeSet.keywords = @[obj.name,@"CX"];
//显示的图标
UIImage * icon = [UIImage imageNamed:obj.imageName];
if (icon) {
attributeSet.thumbnailData = UIImageJPEGRepresentation(icon, 1);
}
4.根据搜索属性创建搜索对象(domainIdentifier:唯一标识)
CSSearchableItem * item = [[CSSearchableItem alloc] initWithUniqueIdentifier:obj.name domainIdentifier:SearchDomain attributeSet:attributeSet];
5.将搜索对象添加到搜索数组
[searchItems addObject:item];
6.设置索引目录
CSSearchableIndex * searchableIndex = [CSSearchableIndex defaultSearchableIndex];
[searchableIndex indexSearchableItems:searchItems completionHandler:^(NSError * _Nullable error) {
if (error != nil) {//添加索引失败
NSLog(@"%@",[error localizedDescription]);
}else{//成功
NSLog(@"indexing successful");
}
}];
7.实现AppDelegate方法(用户通过spotlight搜索到APP里面的内容 点击内容进入APP 就会调用这个方法)
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler{
UINavigationController * vc = (UINavigationController *)self.window.rootViewController;
[vc.topViewController restoreUserActivityState:userActivity];
return YES;
}
8.在搜索列表控制器实现方法(activity里面有用户点击spotlight搜索列表中某条数据的所有属性 根据属性做相应的操作)
- (void)restoreUserActivityState:(NSUserActivity *)activity{}
iOS 9 Spotlight搜索 OC版的更多相关文章
- iOS编程——经过UUID和KeyChain来代替Mac地址实现iOS设备的唯一标示(OC版)
iOS编程——通过UUID和KeyChain来代替Mac地址实现iOS设备的唯一标示(OC版) 很多的应用都需要用到手机的唯一标示,而且要求这个唯一标示不能因为应用app的卸载或者改变而变化. 在iO ...
- iOS拍照上传后,在web端显示旋转 Swift+OC版解决方案
问题描述: 手机头像上传,遇到一个怪现象,就是拍照上传时,手机端显示头像正常,但在web端查看会有一个左旋90度的问题. 并且照片竖怕才会有此问题,横拍不存在. 原因分析: 手机拍照时,用相机拍摄出来 ...
- WKWebView与Js实战(OC版)
前言 上一篇专门讲解了WKWebView相关的所有类.代理的所有API.那么本篇讲些什么呢?当然是实战了! 本篇文章教大家如何使用WKWebView去实现常用的一些API操作.当然,也会有如何与JS交 ...
- Lucene.net站内搜索—6、站内搜索第二版
目录 Lucene.net站内搜索—1.SEO优化 Lucene.net站内搜索—2.Lucene.Net简介和分词Lucene.net站内搜索—3.最简单搜索引擎代码Lucene.net站内搜索—4 ...
- OC版贪吃蛇
昨天写了一个js版贪吃蛇,今天突然想写一个OC版的,来对比一下两种语言的区别 oc版功能,适配所有尺寸iphone,可暂停,可设置地图和蛇的比例,可加速 对比一下会发现js版的相对OC版的会简单一些, ...
- iOS下JS与OC互相调用(六)--WKWebView + WebViewJavascriptBridge
上一篇文章介绍了UIWebView 如何通过WebViewJavascriptBridge 来实现JS 与OC 的互相调用,这一篇来介绍一下WKWebView 又是如何通过WebViewJavascr ...
- iOS下JS与OC互相调用(五)--UIWebView + WebViewJavascriptBridge
WebViewJavascriptBridge是一个有点年代的JS与OC交互的库,使用该库的著名应用还挺多的,目前这个库有7000+star.我去翻看了它的第一版本已经是4年前了,在版本V4.1.4以 ...
- iOS下JS与OC互相调用(四)--JavaScriptCore
前面讲完拦截URL的方式实现JS与OC互相调用,终于到JavaScriptCore了.它是从iOS7开始加入的,用 Objective-C 把 WebKit 的 JavaScript 引擎封装了一下, ...
- 支付宝APP支付IOS手机端java后台版
版权声明:http://blog.csdn.net/u012131769/article/details/76639527#t8 转载:http://blog.csdn.net/u012131769/ ...
随机推荐
- Spark的几种运行模式
1.local单机模式,结果xshell可见:./bin/spark-submit --class org.apache.spark.examples.SparkPi --master local[1 ...
- Jlink烧写图文教程
,点击安装 , 插上jlink,安装驱动后,红灯一直亮 ...
- makefile for VCS from Syn@psys
已调试通过 未来将修改成verdi的FSDB版本 下载后把 Makefile_VCS.txt 修改为 Makefile 就可以使用 链接地址: http://files.cnblogs.com/all ...
- Codeforces10D–LCIS(区间DP)
题目大意 给定两个序列,要求你求出最长公共上升子序列 题解 LIS和LCS的合体,YY好久没YY出方程,看了网友的题解,主要是参考aikilis的,直接搬过来好了 经典的动态规划优化. 用opt[i] ...
- Task任务
- Asp.net多行文本框随内容增加而高度增加
最近做一个项目,在一个多行文本框(TextBox)里显示新闻内容,由于内容有多有少,并且总是出现垂直滚动条,很不好看,笔者就想用一个法子,去掉垂直滚动条,并且文本框的高度随内容的增加而变大,使高度适应 ...
- Hadoop build error java.lang.NoClassDefFoundError: org/sonatype/aether/graph/DependencyFilter
When running the command: + mvn site site:stage -DskipTests -DskipTest -DskipITs you get an error: ...
- eclipse中的maven配置
1.下载最新版eclipse,包含maven版本 2.配置maven本地仓库(修改settings.xml)
- C# 连接SQL数据库 常用连接字符串
一:C# 连接SQL数据库 Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myP ...
- MFC框架中消失的WinMain()
学过一段时间的MFC之后,很多人大概都有一个疑问:在MFC中,WinMain()哪去了?因为任何一个使用过Win32 SDK编程的人都知道,WinMain()函数是Win32程序开始的入口点,可是在M ...