我在我的网站上添加了Web Markup,因此当用户在iOS 9中搜索时,项目将显示在Spotlight搜索结果中。用户可以浏览应用程序中的相同项目,因此我想创建链接到该应用程序的NSUserActivity
个对象用户浏览项目时的网页内容。
现在,NSUserActivity
具有contentAttributeSet
属性,我将使用该属性将缩略图照片附加到活动中。 CSSearchableItemAttributeSet
有一些NSUserActivity
也有的属性,所以我不确定应该实现哪一个,或者我应该为两者指定相同的数据。我是否为title
以及NSUserActivity
上的title
设置CSSearchableItemAttributeSet
,还是仅设置其中一个?{1}}?与keywords
相同,这也是两者的属性。
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;
答案 0 :(得分:1)
如果指定了NSUserActivity和CSSearchableItemAttributeSet的 title属性,那么
如果指定了NSUserActivity和CSSearchableItemAttributeSet的关键字属性,则可以使用CSSearchableItemAttributeSet实例中指定的关键字搜索该项,而不是NSUserActivity实例中指定的关键字。
为NSUserActivity或CSSearchableItemAttributeSet设置属性时没有冲突。
因此,在将CSSearchableIttributeSet与NSUserActivity一起使用时,我们可以跳过设置NSUserActivity类通用的CSSearchableItemAttributeSet属性。
答案 1 :(得分:1)
在与DTS讨论此主题后,这是他们的结论:
关于属性,例如
keywords
,可以在两者上设置 NSUserActivity和NSUserActivity的嵌入式 CSSearchableItemAttributeSet,来自Core Spotlight的建议 工程是你只是在它上面设置它们 CSSearchableItemAttributeSet。[
title
和displayName
]与软相似或多或少相同 这意味着,如果该项目的标题非常长,则会进入title
属性和缩写标题将在displayName
财产。