2015-12-24 8 views
7

Ho aggiunto Web Markup al mio sito web in modo che gli articoli vengano visualizzati nei risultati della ricerca Spotlight quando gli utenti eseguono ricerche in iOS 9. Gli utenti possono sfogliare gli stessi elementi nell'app, quindi voglio creare oggetti NSUserActivity che si collegano al contenuto web mentre gli utenti navigano gli oggetti.Quali proprietà dovrebbero essere utilizzate con CSSearchableItemAttributeSet su NSUserActivity?

Ora, NSUserActivity ha una proprietà contentAttributeSet che verrà utilizzata per allegare una foto di anteprima all'attività. CSSearchableItemAttributeSet ha alcune proprietà che ha anche NSUserActivity, quindi non sono sicuro di quale debba essere implementato o se devo specificare gli stessi dati per entrambi. È possibile impostare title per e title su CSSearchableItemAttributeSet o solo uno o l'altro? Lo stesso vale per keywords che è una proprietà su entrambi.

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; 

risposta

1

Dopo aver parlato con DTS su questo tema, questa è la loro conclusione:

per quanto riguarda le proprietà, come keywords, che può essere impostato sia sul NSUserActivity ed embedded CSSearchableItemAttributeSet del NSUserActivity, il consiglio dal Core Spotlight ingegneria è che li si imposta solo su CSSearchableItemAttributeSet.

[title e displayName] sono più o meno lo stesso, con la morbida implicazione che, se l'elemento ha un tempo molto lungo titolo, che sarebbe andare in proprietà title e il titolo abbreviato sarebbe andato in la proprietà displayName.

1

Se viene specificata la proprietà titolo sia per NSUserActivity e CSSearchableItemAttributeSet, quindi

  1. oggetto è in ricercabile attraverso entrambi i titoli.
  2. Il risultato della ricerca avrà il titolo specificato nell'istanza NSUserActivity.

Se viene specificata la proprietà parola chiave sia per NSUserActivity e CSSearchableItemAttributeSet, quindi l'articolo è ricercabile utilizzando le parole chiave specificate nell'istanza CSSearchableItemAttributeSet e non le parole chiave specificate nell'istanza NSUserActivity.

Non ci sono conflitti quando le proprietà sono impostate per NSUserActivity o CSSearchableItemAttributeSet.

Quindi, quando si utilizza CSSearchableItemAttributeSet con NSUserActivity, è possibile saltare l'impostazione delle proprietà CSSearchableItemAttributeSet che sono comuni alla classe NSUserActivity.

+0

Inoltre, se la proprietà 'CSSearchableItemAttributeSet'' displayName' è impostata, ha la precedenza su entrambe le proprietà 'title' nei risultati di ricerca (in iOS 9.2, almeno) – azsromej