我在我的网站上添加了Web Markup,因此当用户在iOS 9中搜索时,项目将显示在Spotlight搜索结果中.用户可以浏览应用程序中的相同项目,因此我想创建NSUserActivity对象,当用户浏览项目时链接到Web内容.
现在,NSUserActivity有一个contentAttributeSet属性,我将用它来将缩略图照片附加到活动中. CSSearchableItemAttributeSet有一些NSUserActivity也有的属性,所以我不确定应该实现哪一个,或者我应该为两者指定相同的数据.我是否设置了NSUserActivity的标题以及CSSearchableItemAttributeSet上的标题,或者只设置了一个或另一个?与关键字相同,也是两者的属性.
NSUserActivity *activity = [[NSUserActivity alloc] initWithActivityType:@“com.domain.appname-something"]; activity.title = @“My Title"; activity.keywords = [NSSet setWithArray:@[@“one",@“two",@“three"]]; activity.userInfo = @{@“id": @“12345"}; activity.requiredUserInfoKeys = [NSSet setWithArray:@[@“id"]]; activity.eligibleForSearch = YES; activity.eligibleForPublicIndexing = YES; activity.webpageURL = [NSURL URLWithString:@"https://someurl.com"]; //QUESTION: Do I need to duplicate title and keywords here: CSSearchableItemAttributeSet *contentAttributeSet = [[CSSearchableItemAttributeSet alloc] initWithItemContentType:(NSString *)kUTTypeImage]; contentAttributeSet.title = activity.title; contentAttributeSet.displayName = activity.title; contentAttributeSet.keywords = [activity.keywords allObjects]; contentAttributeSet.contentDescription = @“My Description Here"; contentAttributeSet.thumbnailData = [self generateImage]; activity.contentAttributeSet = contentAttributeSet;
解决方法
如果指定了NSUserActivity和CSSearchableItemAttributeSet的title属性,那么
>项目可通过两个标题进行搜索.
>搜索结果将具有NSUserActivity实例中指定的标题.
如果指定了NSUserActivity和CSSearchableItemAttributeSet的关键字属性,则可以使用CSSearchableItemAttributeSet实例中指定的关键字而不是NSUserActivity实例中指定的关键字来搜索该项.
为NSUserActivity或CSSearchableItemAttributeSet设置属性时没有冲突.
因此,当使用带有NSUserActivity的CSSearchableItemAttributeSet时,我们可以跳过设置NSUserActivity类通用的CSSearchableItemAttributeSet属性.