Какие свойства должны использоваться с CSSearchableItemAttributeSet на NSUserActivity?
Я добавил веб-разметку на свой веб-сайт, чтобы элементы отображались в результатах поиска Spotlight при поиске пользователями в iOS 9. Пользователи могут просматривать одни и те же элементы в приложении, поэтому я хочу создать NSUserActivity
объекты, которые ссылаются на веб-контент, когда пользователи просматривают элементы.
Сейчас, NSUserActivity
имеет contentAttributeSet
свойство, которое я буду использовать, чтобы прикрепить миниатюрное фото к действию. CSSearchableItemAttributeSet
имеет некоторые свойства, которые NSUserActivity
также имеет, так что я не уверен, какой из них следует реализовать, или если я должен указать одни и те же данные для обоих. Я устанавливаю title
для NSUserActivity
так же хорошо как title
на CSSearchableItemAttributeSet
или только один или другой? То же самое с 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;
2 ответа
После разговора с DTS на эту тему, это их вывод:
Что касается свойств, как
keywords
, который может быть установлен как для NSUserActivity, так и для встроенного CSSearchableItemAttributeSet NSUserActivity, совет от Core Spotlight заключается в том, что вы устанавливаете их только в CSSearchableItemAttributeSet.[
title
а такжеdisplayName
] более или менее одинаковы, с мягким подтекстом, что, если элемент имеет действительно длинный заголовок, это будетtitle
собственности и сокращенное название будет идти вdisplayName
имущество.
Если указано свойство title для NSUserActivity и CSSearchableItemAttributeSet, то
- Элемент доступен для поиска по обоим заголовкам.
- Результат поиска будет иметь заголовок, указанный в экземпляре NSUserActivity.
Если свойство ключевого слова для NSUserActivity и CSSearchableItemAttributeSet указано, то элемент доступен для поиска по ключевым словам, указанным в экземпляре CSSearchableItemAttributeSet, а не по ключевым словам, указанным в экземпляре NSUserActivity.
Нет никаких конфликтов, когда свойства установлены для NSUserActivity или CSSearchableItemAttributeSet.
Таким образом, при использовании CSSearchableItemAttributeSet с NSUserActivity мы можем пропустить настройку свойств CSSearchableItemAttributeSet, которые являются общими для класса NSUserActivity.