手机
当前位置:查字典教程网 >编程开发 >IOS开发 >iOS9开放的新API--Spotlight使用指南
iOS9开放的新API--Spotlight使用指南
摘要:1.Spotloight是什么?Spotlight在iOS9上做了一些新的改进,也就是开放了一些新的API,通过CoreSpotli...

1.Spotloight是什么?

Spotlight在iOS9上做了一些新的改进, 也就是开放了一些新的API, 通过Core Spotlight Framework你可以在你的app中集成Spotlight。集成Spotlight的App可以在Spotlight中搜索App的内容,并且通过内容打开相关页面。

Demo演示

iOS9开放的新API--Spotlight使用指南1

2.如何集成Spotlight

a.添加所需要的框架

复制代码 代码如下:

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 90000

#import <CoreSpotlight/CoreSpotlight.h>

#import <MobileCoreServices/MobileCoreServices.h>

#endif

注,很多APP都是支持iOS9以下的,因此加入#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 90000,可以解决iOS9以下设备运行崩溃的问题

b.创建CSSearchableItemAttributeSet 对象

复制代码 代码如下:

CSSearchableItemAttributeSet *attributeSet = [[CSSearchableItemAttributeSet alloc] initWithItemContentType:(NSString *)kUTTypeImage];

attributeSet.title = spotlightTitle; // 标题

attributeSet.keywords = keywords; // 关键字,NSArray格式

attributeSet.contentDescription = spotlightDesc; // 描述

attributeSet.thumbnailData = photo; // 图标, NSData格式

// 把图片转换成NSData的方法

UIImagePNGRepresentation([UIImage imageNamed:@"xxx.png"]

c.创建可检索条目CSSearchableItem

复制代码 代码如下:

// spotlightInfo 可以作为一些数据传递给接受的地方

// domainId id,通过这个id来判断是哪个spotlight

CSSearchableItem *item = [[CSSearchableItem alloc] initWithUniqueIdentifier:spotlightInfo domainIdentifier:domainId attributeSet:attributeSet];

d.添加检索入口

复制代码 代码如下:

[[CSSearchableIndex defaultSearchableIndex] indexSearchableItems:@[item] completionHandler:^(NSError * error) {

if (error) {

NSLog(@"indexSearchableItems Error:%@",error.localizedDescription);

}

}];

========完整代码========

复制代码 代码如下:

- (void)insertSearchableItem:(NSData *)photo spotlightTitle:(NSString *)spotlightTitle description:(NSString *)spotlightDesc keywords:(NSArray *)keywords spotlightInfo:(NSString *)spotlightInfo domainId:(NSString *)domainId {

CSSearchableItemAttributeSet *attributeSet = [[CSSearchableItemAttributeSet alloc] initWithItemContentType:(NSString *)kUTTypeImage];

attributeSet.title = spotlightTitle; // 标题

attributeSet.keywords = keywords; // 关键字,NSArray格式

attributeSet.contentDescription = spotlightDesc; // 描述

attributeSet.thumbnailData = photo; // 图标, NSData格式

// spotlightInfo 可以作为一些数据传递给接受的地方

// domainId id,通过这个id来判断是哪个spotlight

CSSearchableItem *item = [[CSSearchableItem alloc] initWithUniqueIdentifier:spotlightInfo domainIdentifier:domainId attributeSet:attributeSet];

[[CSSearchableIndex defaultSearchableIndex] indexSearchableItems:@[item] completionHandler:^(NSError * error) {

if (error) {

NSLog(@"indexSearchableItems Error:%@",error.localizedDescription);

}

}];

}

========加载本地图片的使用方法========

复制代码 代码如下:[self insertSearchableItem:UIImagePNGRepresentation([UIImage imageNamed:@"xxx.png"]) spotlightTitle:@"等风来" description:@"等风来描述" keywords:@[@"鲍鲸鲸",@"大丽花"] spotlightInfo:@"传递过去的值" domainId:@"com.wb.spotlight"];

========加载网络图片的使用方法========

复制代码 代码如下:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

NSData * data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://hiphotos.baidu.com/doc/pic/item/eaf81a4c510fd9f905f61934262dd42a2934a48e.jpg"]];

[self insertSearchableItem:data spotlightTitle:@"等风来" description:@"等风来描述" keywords:@[@"鲍鲸鲸",@"大丽花"] spotlightInfo:@"传递过去的值" domainId:@"com.wb.spotlight"];

});

========删除所有spotlight的方法========

复制代码 代码如下:

[[CSSearchableIndex defaultSearchableIndex] deleteAllSearchableItemsWithCompletionHandler:^(NSError * _Nullable error) {

if (error) {

NSLog(@"%@", error.localizedDescription);

}

}];

========删除指定的spotlight的方法========

复制代码 代码如下:

[[CSSearchableIndex defaultSearchableIndex] deleteSearchableItemsWithDomainIdentifiers:@"domainId" completionHandler:^(NSError * _Nullable error) {

if (error) {

NSLog(@"%@", error.localizedDescription);

}

}];

========点击spotlight后的响应方法========

复制代码 代码如下:

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler {

if ([[userActivity activityType] isEqualToString:CSSearchableItemActionType]) {

NSString *uniqueIdentifier = [userActivity.userInfo objectForKey:CSSearchableItemActivityIdentifier];

// 接受事先定义好的数值,如果是多个参数可以使用把json转成string传递过来,接受后把string在转换为json

NSLog(@"传递过来的值%@", uniqueIdentifier);

}

return YES;

}

备注:

复制代码 代码如下:

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 90000

// 相关spotlight的方法等

#endif

// Spotlight支持iOS9以上设备运行,对与低版本的设备需加入这个防止崩溃问题

【iOS9开放的新API--Spotlight使用指南】相关文章:

iOS应用开发中视图控件UIWindow的基本使用教程

IOS开发中NSURL的基本操作及用法详解

IOS关闭键盘的方法

深入讲解iOS开发中的UIViewController

iOS开发中最有用关键的代码整合

iOS开发中Date Picker和UITool Bar控件的使用简介

在iOS开发的Quartz2D使用中实现图片剪切和截屏功能

iOS App中UILabel的自定义及在Auto Layout中的使用

iOS开发之UIScrollView详解

iOS开发中UIPopoverController的使用详解

精品推荐
分类导航