2015-12-24 8 views
7

Ich habe meiner Website ein Web-Markup hinzugefügt, damit Elemente in Spotlight-Suchergebnissen angezeigt werden, wenn Benutzer in iOS 9 suchen. Benutzer können die gleichen Elemente in der App durchsuchen. Daher möchte ich Objekte erstellen, die beim Durchsuchen des Benutzers auf den Webinhalt verweisen die Gegenstände.Welche Eigenschaften sollten mit CSSearchableItemAttributeSet auf NSUserActivity verwendet werden?

Jetzt hat NSUserActivity eine contentAttributeSet Eigenschaft, die ich verwenden, um ein Miniaturbild an die Aktivität anzuhängen. CSSearchableItemAttributeSet hat einige Eigenschaften, die NSUserActivity auch hat, so dass ich bin mir nicht sicher, welche soll ich implementieren oder wenn ich die gleichen Daten für beide angeben soll. Setze ich die title für die NSUserActivity sowie die title auf die CSSearchableItemAttributeSet oder nur die eine oder andere? Gleiches mit keywords, das eine Eigenschaft auf beiden auch ist.

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; 

Antwort

1

Nachdem mit DTS zu diesem Thema sprechen, das ist ihr Fazit:

Hinsichtlich Eigenschaften, wie keywords, die sowohl auf den NSUserActivity und die NSUserActivity Embedded CSSearchableItemAttributeSet, die Beratung von Kern eingestellt werden können Spotlight Engineering ist, dass Sie setzen sie einfach auf den CSSearchableItemAttributeSet.

[title und displayName] sind mehr oder weniger die gleiche, mit der weichen Implikation, dass, wenn das Element einen wirklich langen Titel hat, dass in die title Eigenschaft und den Kurztitel würde in gehen würde die displayName Eigenschaft.

1

Wenn die Eigenschaft title für beide NSUserActivity und CSSearchableItemAttributeSet angegeben wird, dann

  1. Artikel ist durchsuchbar durch beide Titel.
  2. Das Suchergebnis wird den Titel in NSUserActivity Instanz angegeben haben.

Wenn die Schlüsselwort Eigenschaft für beide NSUserActivity und CSSearchableItemAttributeSet angegeben ist, dann ist das Element durchsuchbare die Schlüsselwörter in der Instanz CSSearchableItemAttributeSet angegeben und nicht die in der Instanz NSUserActivity angegebenen Schlüsselwörter.

Es gibt keine Konflikte, wenn Eigenschaften für NSUserActivity oder CSSearchableItemAttributeSet festgelegt werden.

Wenn Sie also CSSearchableItemAttributeSet mit NSUserActivity verwenden, können Sie die CSSearchableItemAttributeSet-Eigenschaften überspringen, die der NSUserActivity-Klasse gemeinsam sind.

+0

Wenn die Eigenschaft 'CSSearchableItemAttributeSet'' displayName 'festgelegt ist, hat sie Vorrang vor den 'title' -Eigenschaften in den Suchergebnissen (mindestens in iOS 9.2). – azsromej

Verwandte Themen