快速集成iOS9 spotlight

在iOS9中,苹果为开发者提供了搜索应用内内容的功能,通过阅读官方文档,来实现如下简单效果

快速集成iOS9 spotlight_第1张图片
效果图

本文章Demo:https://github.com/MenghanInChina/spotlightSearchDemo
先引入头文件

@import CoreSpotlight;

需要添加索引的界面执行以下代码


- (void)saveSpotlightInfo{
    NSMutableArray *searchableItems = [NSMutableArray array];
    for (NSString *str in self.testArr) {
        
        CSSearchableItemAttributeSet *attributedSet = [[CSSearchableItemAttributeSet alloc] initWithItemContentType:@"image"];
        //在spotlight显示的名称
        attributedSet.title = str;
        //使用displayName, title就会无效
//        attributedSet.displayName = [str stringByAppendingString:@"test"];
        //展示介绍
        attributedSet.contentDescription = @"我是测试临时工";
        
        //此方法只可以使用本地路径
//        attributedSet.thumbnailURL;
        attributedSet.thumbnailData = UIImageJPEGRepresentation([UIImage imageNamed:@"x-man.jpg"], 0.5);
        //添加用来检索的关键字
//        attributedSet.keywords = @[@"1",@"2"];
        //拨打电话功能
        //需要将此属性赋值为1才可以生效
        attributedSet.supportsPhoneCall = @1;
        //设置电话号码
        attributedSet.phoneNumbers = @[@"123"];
        
        //定位地点集成
        attributedSet.supportsNavigation = @1;
        //集成地点需要设置经纬度
        attributedSet.latitude = @2;
        attributedSet.longitude = @3;

        /**
         Identifier代表通过spotlight点击进入应用时携带的userinfo
         
         */
        CSSearchableItem *item = [[CSSearchableItem alloc] initWithUniqueIdentifier:str domainIdentifier:@"image" attributeSet:attributedSet];
        [searchableItems addObject:item];
        
        
        
        
    }
    
    [[CSSearchableIndex defaultSearchableIndex] indexSearchableItems:searchableItems completionHandler:^(NSError * _Nullable error) {
        if (error != nil) {
            NSLog(@"%@",error.localizedDescription);
        }
        
    }];

    

}

在appDelegate中添加回调方法可再采取对应的操作

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler{
    NSLog(@"---spotlight---:%@", userActivity.userInfo[@"kCSSearchableItemActivityIdentifier"]);

    return YES;

}

你可能感兴趣的:(快速集成iOS9 spotlight)