2015-12-24 6 views
7

Я добавил веб-маркер на свой сайт, поэтому элементы появятся в Spotlight. Результаты поиска, когда пользователи ищут в iOS 9. Пользователи могут просматривать те же элементы в приложении, поэтому я хочу создать объекты NSUserActivity, которые ссылаются на веб-контент при просмотре пользователями. предметы.Какие свойства следует использовать с CSSearchableItemAttributeSet в 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; 

ответ

1

После разговора с DTS на эту тему, это их вывод:

Что касается свойств, как keywords, которые могут быть установлены как на NSUserActivity и в NSUserActivity, погруженные CSSearchableItemAttributeSet, советы от Ядра Spotlight техникой является то, что вы устанавливаете их только на CSSearchableItemAttributeSet.

[title и displayName] являются более или менее то же самое, с мягким подразумевается, что, если элемент имеет очень длинное название, что бы идти в на title имущество и сокращенное название будет идти в displayName Недвижимость.

1

Если титул собственности как для NSUserActivity и CSSearchableItemAttributeSet указан, то

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

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

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

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

+0

Кроме того, если установлено свойство 'displayearchName'' CSSearchableItemAttributeSet'', оно имеет приоритет над любым свойством 'title' в результатах поиска (по крайней мере, в iOS 9.2) – azsromej