【IOS工具类】IOS9的CoreSpotlight(OC语言)

什么是CoreSpotlight?就是在IOS9下。让用户在下拉的搜索页面里能够搜索到你的应用。

#import <Foundation/Foundation.h>

@interface IOS9SearchAPIUtil : NSObject

+(IOS9SearchAPIUtil *)sharedInstance;


-(void)addSearchItemsArray:(NSArray *)array;


@end

#import "IOS9SearchAPIUtil.h"
#import <CoreSpotlight/CoreSpotlight.h>
#import <MobileCoreServices/MobileCoreServices.h>
#import "NSString+Wrapper.h"
#import <UIKit/UIKit.h>

#define IOS9SearchAPIUtil_domainIdentifier @"com.searchapi.shows"
@implementation IOS9SearchAPIUtil

+(IOS9SearchAPIUtil *)sharedInstance{
    static IOS9SearchAPIUtil *instance = nil;
    static dispatch_once_t predicate;
    dispatch_once(&predicate, ^{
        instance = [[self alloc] init];
    });
    return instance;
}

-(void)addSearchItemsArray:(NSArray *)array{
    if(IS_IOS_9){
        NSMutableArray <CSSearchableItem *> *searchableItems = [NSMutableArray arrayWithCapacity:0];
        for (NSDictionary *d in array) {
            NSString *title = [d objectForKey:@"title"];
            NSString *desc = [d objectForKey:@"desc"];
            NSString *time = [d objectForKey:@"time"];
            NSString *nid = [d objectForKey:@"nid"];
            CSSearchableItemAttributeSet *attributeSet = [[CSSearchableItemAttributeSet alloc]initWithItemContentType:@"SearchAPIViews"];
            attributeSet.title = title;
            attributeSet.contentDescription = [NSString stringWithFormat:@"%@\n%@",desc,time];
            NSMutableArray *keywords = [NSMutableArray arrayWithArray:[title split:@" "]];
            [keywords addObject:desc];
            attributeSet.keywords = keywords;
            NSString *identifiner = [NSString stringWithFormat:@"%@",nid];
            [searchableItems addObject:[[CSSearchableItem alloc]initWithUniqueIdentifier:identifiner domainIdentifier:IOS9SearchAPIUtil_domainIdentifier attributeSet:attributeSet]];
        }
        
        [[CSSearchableIndex defaultSearchableIndex]indexSearchableItems:searchableItems completionHandler:^(NSError * __nullable error) {
            if(error != nil){
                NSLog(@"%@",error.localizedDescription);
            }else {
                NSLog(@"Items were indexed successfully");
            }
        }];
    }
}

@end
用法:
[[IOS9SearchAPIUtil sharedInstance]addSearchItemsArray:@[@{@"nid":@"fin://1238796",@"title":@"fin",@"desc":@"基金",@"time":@"2014-01-01"},@{@"nid":@"fun://54fdsaf32",@"title":@"fun",@"desc":@"理財",@"time":@"2016-01-01"}]];
效果:



PS:

上传framework:



Swift版本号:http://www.csdn.net/article/2015-07-16/2825222-search-apis


#define IS_IOS_9 ([[[UIDevice currentDevice] systemVersion] floatValue] >=9.0 ? YES : NO)

split就是调用NSString的 componentsSeparatedByString 方法;

NSString+Wapper.h 类參照:http://blog.csdn.net/coooliang/article/details/45871149 



posted @ 2017-07-16 21:16  wzjhoutai  阅读(151)  评论(0编辑  收藏  举报