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

2016-02-19 10:41 15 1 收藏

今天天气好晴朗处处好风光,好天气好开始,图老师又来和大家分享啦。下面给大家推荐iOS9开放的新API--Spotlight使用指南,希望大家看完后也有个好心情,快快行动吧!

【 tulaoshi.com - 编程语言 】

1.Spotloight是什么?

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

  Demo演示

  

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);
          
        }
    }];
}

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

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

代码如下:
[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的方法========

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

代码如下:

[[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以上设备运行,对与低版本的设备需加入这个防止崩溃问题

来源:https://www.tulaoshi.com/n/20160219/1595480.html

延伸阅读
标签: 电脑入门
在本文中我们将会看到的是Eisoo DiskGenius,一款磁盘工具从安装到使用的全攻略! 一. 软件安装 该软件为绿色安装版本,无须进行安装,只须将下载软件包进行解压即可使用。 二. 软件使用 我们只须点击文件夹内图标 即可进入软件主界面,软件在启动以后会自动对当前硬盘信息进行检测,如下图所示: DiskGenius之软件主界面(图二...
满月剃胎发陋习不足取 我国民间流传着满月剃胎发的风俗,认为孩子满月时用剃刀将胎发剃光可使婴儿头发长得浓密,甚至有人说剃得越光,将来头发就会越黑越多。南京市妇幼保健院的专家说,满月剃胎发不仅没有科学依据,这种陋习还有可能危及小生命的安全。    婴儿尤其是新生儿的皮肤屏障机制较差,而有些锋利的剃刀根本没有经过...
选择图片 首先选择一张咩咩,露珠喜欢一比一的大小,然后点击白边,缩放图片,居中。 添加文字 添加文字,选择黑色。 点击背景 点击下面的背景,可以得到一个镂空的效果,如果不想要镂空,可以增加透明度。 效果如下 然后再加一些想加的字 最后选一个喜欢的滤镜 更多推荐: 黄油相机怎么使用 ...
标签: MySQL mysql数据库
  mysql使用指南(上) 作者:大金刚   有很多朋友虽然安装好了mysql但却不知如何使用它。在这篇文章中我们就从连接MYSQL、修改密码、增加用户等方面来学习一些MYSQL的常用命令。 一、连接MYSQL。 格式: mysql -h主机地址 -u用户名 -p用户密码 1、例1:连接到本机上的MYSQL。    首先在打开DOS窗口,...
ios9有哪些新功能?   亮点一:地图增加公交换乘 苹果自带的地图由于国内功能缺失不少,一直可用性并不高,这次终于有点实用的公交换乘功能了。新版地图加入了公共交通导航服务,包括公交、地铁、火车等交通工具,火车站及地铁等出入口都有详细标注。 亮点二:ipad分屏多任务 slide over功能可以让用户在两个应...

经验教程

72

收藏

28
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部