iOS开发之集成iOS9中的Core Spotlight Framework搜索App的内容
Spotlight在iOS9上做了一些新的改进, 也就是开放了一些新的API, 通过Core Spotlight Framework你可以在你的app中集成Spotlight。集成Spotlight的App可以在Spotlight中搜索App的内容,并且通过内容打开相关页面。因为接到开发任务,老大说让在App中支持Spotlight, 于是又搞了搞苹果的官方文档。可以说,集成Spotlight不算复杂,官网上讲的也挺明白的,今天博客就通过一个Demo来集成一下Spotlight。
苹果官方有关Core Spotlight Framework的链接如下:
一.Demo运行效果
还是通过一个Demo来进行介绍,Demo运行效果如下。我们App中有关于宫崎骏的的内容,然后在Spotlight中搜索宫崎骏,就可以搜索到相关内容,并且可以点击打开展示相关内容。具体运行效果如下:
二.集成Core Spotlight Framework
1.想在App中使用Spotlight,首先得引入Core Spotlight Framework,Targets - General - linked Frameworks and Libraries 点击加号添加CoreSpotlight.framework。如下截图所示。
2.在相应的视图控制器中引入 CoreSpotlight/CoreSpotlight.h 头文件,然后就开始写代码使自己的App内容支持Spotlight搜索了。下面是为Demo添加Spotlight的相关代码。Spotlight搜索出来的东西,每一项就是一个条目即CSSearchableItem的对象,而改对象又关联一个属性集合(CSSearchableItemAttributeSet )该集合中存储了CSSearchableItem对象的相关属性,如果title(标题), contentDescription(内容简介),
thumbnailData(图片)等所需内容。具体请看下方代码描述和代码注释。
代码描述:
(1).首先定义了一个temp数组,用来存储在Spotlight中搜索的关键字,也就是Spotlight可以搜索到的App内容。数组中的内容通过循环遍历经过一系列的步骤给Spotlight进行关联。
(2)在每次遍历内容数组的过程中,需要创建一个CSSearchableItemAttributeSet(属性集合),并给属性集合中的一些属性赋上值。然后再创建一个CSSearchableItem,创建CSSearchableItem时,把其对应的属性集合进行关联。把每次创建好的条目暂存到可变数组中,因为创建好所有的条目后还要和Spotlight的索引(CSSearchableIndex)进行关联。
(3)通过单例获取CSSearchableIndex的对象,并与我们创建好的CSSearchableItem数组进行关联。具体代码和步骤如下。
- (void)supportSpotlightSearch { dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dispatch_async(queue, ^{ @try { NSArray *temp = @[@"宫崎骏-龙猫", @"宫崎骏-千与千寻", @"宫崎骏-天空之城"]; //创建SearchableItems的数组 NSMutableArray *searchableItems = [[NSMutableArray alloc] initWithCapacity:temp.count]; for (int i = 0; i temp.count; i ++) { //1.创建条目的属性集合 CSSearchableItemAttributeSet * attributeSet = [[CSSearchableItemAttributeSet alloc] initWithItemContentType:(NSString*) kUTTypeImage]; //2.给属性集合添加属性 attributeSet.title = temp[i]; attributeSet.contentDescription = [NSString stringWithFormat:@"宫崎骏与%@", temp[i]]; attributeSet.thumbnailData = UIImagePNGRepresentation([UIImage imageNamed:[NSString stringWithFormat:@"%d.png", i+1]]); //3.属性集合与条目进行关联 CSSearchableItem *searchableItem = [[CSSearchableItem alloc] initWithUniqueIdentifier:[NSString stringWithFormat:@"%d", i+1] domainIdentifier:@"ZeluLi.SpotlightSearchDemo" attributeSet:attributeSet]; //把该条目进行暂存 [searchableItems addObject:searchableItem]; //4.吧条目数组与索引进行关联 [[CSSearchableIndex defaultSearchableIndex] indexSearchableItems:searchableItems completionHandler:^(NSError * _Nullable error) { if (!error) { NSLog(@"%s, %@", __FUNCTION__, [error localizedDescription]); @catch (NSException *exception) { NSLog(@"%s, %@", __FUNCTION__, exception); @finally { }
3.处理搜索后条目点击的事件,该事件的处理要在AppDelegate中下面的委托代理方法中进行处理。下面的idetifier就是属性集合与条目进行关联时指定的唯一标示。
- (BOOL)application:(nonnull UIApplication *)application continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray * __nullable))restorationHandler{ NSString *idetifier = userActivity.userInfo[@"kCSSearchableItemActivityIdentifier"]; UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController; ViewController *vc = [navigationController viewControllers][0]; [vc.myImage setImage:[UIImage imageNamed:[NSString stringWithFormat:@"%@.png",idetifier]]];
StoreKit:iOS应用内推广其他App 在iOS应用中,要推广其他App有两种途径,一种是直接跳转到AppStore软件的对应App商品页,还有一种是在当前应用内内嵌一个App商品页。相比第一种方式,第二种方式的体验更好,并且不会打断用户对当前应用的使用。
iOS上架App Store详解(图文) APP专用密码app-specific password是专门用于上传ipa文件的一种密码,是一种苹果的安全机制! 现在苹果开发者账号开启了双重认证,提交ipa文件时候都需要这个密码!
Application Loader及Transporter App上传ipa外、可以在Windows上架iOS APP工具 随着xcode的更新,苹果公司已经不直接提供Application Loader这个工具上传IPA了,导致上传ipa比较难搞了。 这里分享介绍一个可以在Windows、跨平台申请iOS证书上传ipa的工具Appuploader,方面跨平台开发没有苹果电脑,或者还不熟悉iOS上架流程的开发者使用。 双重验证码登录,安全放心,已帮助上万开发者提交苹果APP!
一步一腳印的 iOS App 上架和更新流程 APP Uploader APP开发助手-iOS APP上架到App Store的辅助工具,解决iOS APP上架繁琐费时的情况,帮助跨平台APP开发者上架苹果应用,在没有配置Mac苹果机的情况,实现iOS证书申请,创建iOS开发者证书、iOS发布证书等各类证书,iOS开发者在Windows、Linux或Mac系统中上传IPA到App Store,简化iOS APP上架流程!在Windows pc中轻松快速上架你的APP。
如何增加 iOS APP 虚拟地址空间及内存上限?XNU 内核源码解读 1. 引言 最近一段时间在做钉钉 iOS 内存专项治理,解决内存不足时的 jetsam 事件及 malloc 的异常崩溃。在进程创建时系统会为每个 app 设定内存最大使用上限,内核会维护一个内存阈值优先级列表,当设备内存不足时低优先级的 app 会首先被内核中止进程。在阅读 XNU 内核源码过程中我们发现提供系统了两种能力可以扩展 App 的虚拟地址空间(com.apple.developer.kernel.extended-virtual-addressing)和增加内存使用上限(com.apple.developer.kernel.increased-memory-limit)。
《一步步了解iOS APP上架流程,让你的APP顺利进入App Store的大门》 随着Apple Store越来越成熟,以及越来越多的开发者和公司希望在该平台上投放自己的产品,iOS APP上架成为许多开发者和公司普遍关注的话题。但是,由于苹果App Store的审核政策日益严格,大多数开发者和公司都不太清楚iOS APP上架的具体流程。今天,我们将为您介绍iOS APP上架的具体流程,希望可以帮助您顺利的完成iOS APP的上架。
iOS APP上架流程(详细) Appuploader可以辅助在Windows、linux或mac系统直接申请iOS证书p12,及上传ipa到App Store,最方便在Windows开发上架没有苹果Mac电脑的开发者!配合本教程使用,可以快速掌握如何真机测试及上架!
相关文章
- iOS小技能: static、extern 存储类的应用(创建共享实例、申明公共方法、全局字符串常量)
- 仿IOS 带字母索引的滑轮控件
- iOS架构设计:揭秘MVC, MVP, MVVM以及VIPER
- iOS上架App Store详解(图文)
- Application Loader及Transporter App上传ipa外、可以在Windows上架iOS APP工具
- 2018最新苹果APP上架App Store流程(超详细)
- 一步步了解iOS APP上架流程,让你的APP顺利进入App Store的大门
- 用windows或linux系统 可以上传ios app到苹果应用商店吗?
- 使用Application 上传iOS App
- 最新版iOS及APP Store上架
- Uni开发的app,使用Windows S10,放在ios上,全程跟着一个马平川。
- AnyTrans for iOS for mac(ios数据传输管理工具)
- iOS 编程中 throttle 的那些事详解手机开发
- iOS常见文件及程序的启动原理详解手机开发
- 正则表达式在iOS中的运用详解手机开发
- iOS使用自签名证书实现HTTPS请求详解手机开发
- iOS开发—-优秀文章推荐详解手机开发
- vue main.js中app绑定的是index.html还是App.vue中详解编程语言
- appLinux开发探索之路:从iOS APP开始(linux开发ios)
- iOS 15新特性:可实现iPad的跨应用拖放功能
- App测试技术利用Mysql助力质量保障(app测试mysql)