7

NSUserActivityWeb マークアップを Web サイトに追加して、ユーザーが iOS 9 で検索したときに項目が Spotlight 検索結果に表示されるようにしました。ユーザーはアプリで同じ項目を参照できるため、ユーザーが項目を参照するときに Web コンテンツにリンクするオブジェクトを作成したいと考えています。

これで、サムネイル写真をアクティビティに添付するために使用するプロパティがありますNSUserActivity。にもいくつかのプロパティがあるため、どちらを実装する必要があるのか​​ 、または両方に同じデータを指定する必要があるのか​​ わかりません。を に設定するのと同様にに設定するのですか、それともどちらか一方だけに設定しますか? 両方のプロパティでも同じです。contentAttributeSetCSSearchableItemAttributeSetNSUserActivitytitleNSUserActivitytitleCSSearchableItemAttributeSetkeywords

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;
4

2 に答える 2

1

NSUserActivity と CSSearchableItemAttributeSet の両方のタイトル プロパティが指定されている場合、

  1. 両方のタイトルからアイテムを検索できます。
  2. 検索結果には、NSUserActivity インスタンスで指定されたタイトルが含まれます。

NSUserActivity と CSSearchableItemAttributeSet の両方のキーワード プロパティが指定されている場合、NSUserActivity インスタンスで指定されたキーワードではなく、CSSearchableItemAttributeSet インスタンスで指定されたキーワードを使用してアイテムを検索できます。

プロパティが NSUserActivity または CSSearchableItemAttributeSet のいずれかに設定されている場合、競合はありません。

したがって、NSUserActivity で CSSearchableItemAttributeSet を使用する場合、NSUserActivity クラスに共通の CSSearchableItemAttributeSet プロパティの設定をスキップできます。

于 2016-01-18T08:55:46.740 に答える
1

このトピックについて DTS と話し合った結果、次のような結論が得られました。

のような、NSUserActivity と NSUserActivity の埋め込み CSSearchableItemAttributeSet の両方で設定できるプロパティに関して、keywordsコア スポットライト エンジニアリングからのアドバイスは、CSSearchableItemAttributeSet だけで設定することです。

[titledisplayName] は多かれ少なかれ同じですが、アイテムに非常に長いタイトルがある場合、それはtitleプロパティに入り、省略されたタイトルは displayNameプロパティに入ります。

于 2016-02-21T19:47:54.413 に答える