当前位置: 首页 > 编程笔记 >

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

杭泉
2023-03-14
本文向大家介绍iOS9开放的新API--Spotlight使用指南,包括了iOS9开放的新API--Spotlight使用指南的使用技巧和注意事项,需要的朋友参考一下

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

           

        }

    }];

}

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

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

 类似资料:
  • 我有一个。NET Core3.0应用程序,我正在尝试实现Swashbuckle包。所以我可以执行http get请求。 我有一个这样的控制器: Thnak你。

  • 淘宝开放平台(Taobao Open Platform,简称TOP)提供了丰富的API,开发者可以方便通过QAP调用TOP API。 单个API QN.top.invoke({ query: { method: 'taobao.user.seller.get', // TOP 接口名称 fields: 'nick,sex' // 除了`method`字段外,其他字段为请求的

  • 1.1. 对外数据API 调用方法: 提供数据API服务的地址为https://hubble.netease.com/api/,每一个调用请求需在请求头部内容中传入AccessKey作为认证信息,AccessKey在哈勃产品页面的应用管理->查看AccessKey中获取。 响应内容分为code、message、data。code为服务状态码,message为服务状态信息,data为数据结果;调用方

  • 开启/配置 API 访问 通常情况下, ENABLE_SWAGGER 默认开启并且参数 MAX_RESPONSE_ITEMS 默认为 50。您可以从 Config Cheat Sheet 中获取更多配置相关信息。 通过 API 认证 Gitea 支持以下几种 API 认证方式: HTTP basic authentication 方式 通过指定 token=... URL 查询参数方式 通过指定

  • 我有一个SAM模板文件,其中我将Api定义为AWS::Serverless::Api资源。api应该具有EndpointConfiguration:PRIVATE与AWS::ApiGateway::RestApi不同,AWS::Serverless::api仅支持EndpointConfiguration的字符串值。 对于AWS::ApiGateway::RestApi:我可以添加2种属性类型:私

  • 环境安装 nodejs安装 https://nodejs.org/ 下载nodejs安装即可, node -v查看安装的版本,npm -v 查看npm版本。 建议对nodejs进行简单的环境配置, 同时下载并安装git, 并通过git --version查看git版本。 进行chain3库安装 npm install chain3 -g 注意:某些情况下,Windows下需要用“以管理员身份运