人工智能技术杂谈iOS Developer程序员

[程序员日记]iOS spotlight与进入程序的几种方法

2016-08-11  本文已影响230人  KeyLiu7

spotlight是iOS 9新推出的功能,允许用户在系统中根据他们的设置搜索所有与关键词有关的东西。它的使用比较简单,下面说说它的使用和遇到的那些坑。

spotlight效果展示

在使用时需要引入框架并导入头问价

 <CoreSpotlight/CoreSpotlight.h>
 <MobileCoreServices/MobileCoreServices.h>

(1)创建spotlight,主要分为三步

(2)删除,三种删除方法

- (void)deleteSearchableItemsWithIdentifiers:(NSArray<NSString *> *)identifiers completionHandler:(void (^ __nullable)(NSError * __nullable error))completionHandler
- (void)deleteSearchableItemsWithDomainIdentifiers:(NSArray<NSString *> *)domainIdentifiers completionHandler:(void (^ __nullable)(NSError * __nullable error))completionHandler
- (void)deleteAllSearchableItemsWithCompletionHandler:(void (^ __nullable)(NSError * __nullable error))completionHandler

(3)通过spotlight唤起应用程序需要在Appdelegate中调用相应的方法。

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

可以通过userActivity.userInfo[@"kCSSearchableItemActivityIdentifier"]判断点击内容。

至此,启动一个应用不再只是点击应用进入,那我们来看看启动应用的其他几种方法。

通过点击推送通知内容进入程序

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler

3D Touch是6s/6s plus以及以后苹果设备特有的功能,设置shortcutItem设置菜单,通过其进入相应内容

- (void)application:(UIApplication *)application performActionForShortcutItem:(UIApplicationShortcutItem *)shortcutItem completionHandler:(void (^)(BOOL))completionHandler

可以通过shortcutItem.type确定选择哪一条

(4)注意
在创建和删除spotlight时,系统会自动分配一个子线程,因此无需再次分配线程。若要显示相关的UI(如alert),需要performSelectorOnMainThread

补充
在使用spotlight时还是会遇到性能的问题。比如我的程序是在数据请求回来时将数据存入spotlight,也要现实在UI线程中。当知道spotlight会再次分配线程时便没有再分配,导致很卡。因此在使用时还是单独创建一个异步线程管理这一块吧。

谢谢查看,欢迎补充!

文章优先发表于:http://keyliu.com
转载请注明出处。

上一篇 下一篇

猜你喜欢

热点阅读