¿Qué properties se deben usar con CSSearchableItemAttributeSet en NSUserActivity?

Agregué el marcado web a mi website para que los elementos aparezcan en los resultados de búsqueda de Spotlight cuando los usuarios buscan en iOS 9. Los usuarios pueden explorar los mismos elementos en la aplicación, por lo tanto, quiero crear objects NSUserActivity que enlazan con el contenido web a medida que los usuarios navegan por los artículos .

Ahora, NSUserActivity tiene una propiedad contentAttributeSet que contentAttributeSet para adjuntar una foto en miniatura a la actividad. CSSearchableItemAttributeSet tiene algunas properties que NSUserActivity también tiene, por lo que no estoy seguro de cuál debo implementar o si debería especificar los mismos datos para ambos. ¿Configuro el title para NSUserActivity así como el title en CSSearchableItemAttributeSet o solo uno u otro? Lo mismo con las keywords que es una propiedad en ambos también.

 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.requinetworkingUserInfoKeys = [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; 

Si se especifica la propiedad del título para NSUserActivity y CSSearchableItemAttributeSet, entonces

  1. El artículo se puede search en los dos títulos.
  2. El resultado de la búsqueda tendrá el título especificado en la instancia de NSUserActivity.

Si se especifica la propiedad de palabra key para NSUserActivity y CSSearchableItemAttributeSet, entonces el elemento se puede search utilizando las palabras key especificadas en la instancia CSSearchableItemAttributeSet y no las palabras key especificadas en la instancia NSUserActivity.

No hay conflictos cuando las properties se establecen para NSUserActivity o CSSearchableItemAttributeSet.

Por lo tanto, cuando se usa CSSearchableItemAttributeSet con NSUserActivity, podemos omitir la configuration de las properties CSSearchableItemAttributeSet que son comunes a la class NSUserActivity.

Después de hablar con DTS sobre este tema, esta es su conclusión:

Con respecto a las properties, como las keywords , que se pueden establecer tanto en NSUserActivity como en el CSSearchableItemAttributeSet incorporado de NSUserActivity, el consejo de la ingeniería de Core Spotlight es que los establece solo en el CSSearchableItemAttributeSet.

[ title y displayName ] son ​​más o less lo mismo, con la suave implicación de que, si el elemento tiene un título realmente largo, iría en la propiedad del title y el título abreviado iría en la propiedad displayName .