Какие свойства должны использоваться с 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, то

  1. Элемент доступен для поиска по обоим заголовкам.
  2. Результат поиска будет иметь заголовок, указанный в экземпляре NSUserActivity.

Если свойство ключевого слова для NSUserActivity и CSSearchableItemAttributeSet указано, то элемент доступен для поиска по ключевым словам, указанным в экземпляре CSSearchableItemAttributeSet, а не по ключевым словам, указанным в экземпляре NSUserActivity.

Нет никаких конфликтов, когда свойства установлены для NSUserActivity или CSSearchableItemAttributeSet.

Таким образом, при использовании CSSearchableItemAttributeSet с NSUserActivity мы можем пропустить настройку свойств CSSearchableItemAttributeSet, которые являются общими для класса NSUserActivity.

Другие вопросы по тегам