ios9新特性-内容索引

在WWDC 2015会议上,苹果官方公布了iOS9。除开许多新的特性和增强功能,这次升级也给了开发者们一个机会让他们的app里的内容能通过Spotlight搜索功能被发现和使用。在iOS9中可用的新APIs允许你去索引APP里面的内容或者界面状态,通过Spotlight来让用户使用。 这些新的搜索APIs的三大组件为:

NSUserActivity 类, 它是为可被看见的APP内容而设计的

Core Spotlight 框架, 为任何APP内容而设计的

web markup,为这一类型的APP设计的,就是APP的内容在某个网站上有镜像

在这里,我将会向你展示可以怎样在你的应用中使用NSUserActivity类以及 Core Spotlight 框架。

绑定数据源,使其能被搜索

- (void)saveFriend {
    NSMutableArray  *searchableItems = [NSMutableArray array];
    // 将Friend里的每个属性绑定到CSSearchableItemAttributeSet中
    for (Friend *friend in self.friendArray) {
        CSSearchableItemAttributeSet *attribute = [[CSSearchableItemAttributeSet alloc] initWithItemContentType:@"image"];
        attribute.title = friend.name;
        attribute.contentDescription = friend.webUrl;
        attribute.thumbnailData = UIImagePNGRepresentation(friend.image);
    
        CSSearchableItem *item = [[CSSearchableItem alloc]initWithUniqueIdentifier:friend.f_id domainIdentifier:@"hahahaha" attributeSet:attribute];
        
        [searchableItems addObject:item];
    }
    
    [[CSSearchableIndex defaultSearchableIndex] indexSearchableItems:searchableItems completionHandler:^(NSError * _Nullable error) {
        if (!error) {
            NSLog(@"%@",error);
        } else {
            NSLog(@"被点击了");
        }
    }];
}

在App delegate里实现下面的方法能够处理自定义事件

- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler {
    NSString *f_id = userActivity.userInfo[@"kCSSearchableItemActivityIdentifier"];
    ViewController *vc = (ViewController *)self.window.rootViewController;
    [vc loadImage:f_id];
    return true;
}

具体请看Demo

Demo地址:https://github.com/SunnyYoung0917/SearchAppDemo.git

你可能感兴趣的:(ios9新特性-内容索引)