我在我的网站中添加了网页标记,这样当用户在iOS 9中搜索时,Spotlight搜索结果中就会出现项目。用户可以在应用程序中浏览相同的项目,因此我希望创建NSUserActivity对象,该对象与用户浏览项目时链接到Web内容。
现在,NSUserActivity有一个contentAttributeSet属性,我将使用该属性将缩略图附加到活动。CSSearchableItemAttributeSet具有NSUserActivity也具有的一些属性,因此我不确定应该实现哪个属性,或者是否应该为两者指定相同的数据。我是为title设置了NSUserActivity,还是设置了CSSearchableItemAttributeSet上的title,还是只设置了其中一个?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;发布于 2016-02-21 19:47:54
在与DTS就这个问题进行了讨论之后,他们得出了以下结论:
关于属性,比如
keywords,可以在NSUserActivity和NSUserActivity的嵌入式CSSearchableItemAttributeSet上设置,Core工程的建议是只在CSSearchableItemAttributeSet上设置它们。title和displayName或多或少是一样的,它的软含义是,如果条目有一个很长的标题,那么它将在title属性中,而缩写的标题将在displayName属性中。
发布于 2016-01-18 08:55:46
如果同时为和CSSearchableItemAttributeSet指定了NSUserActivity标题属性,则
如果同时为和CSSearchableItemAttributeSet指定了NSUserActivity关键字属性,则可以使用在CSSearchableItemAttributeSet实例中指定的关键字而不是NSUserActivity实例中指定的关键字搜索该项。
为NSUserActivity或CSSearchableItemAttributeSet设置属性时不存在冲突。
因此,当将CSSearchableItemAttributeSet与NSUserActivity一起使用时,我们可以跳过设置NSUserActivity类共有的CSSearchableItemAttributeSet属性。
https://stackoverflow.com/questions/34458052
复制相似问题