7

我向我的网站添加了 Web 标记,因此当用户在 iOS 9 中搜索时,项目将出现在 Spotlight 搜索结果中。用户可以在应用程序中浏览相同的项目,因此我想在NSUserActivity用户浏览项目时创建链接到 Web 内容的对象。

现在,NSUserActivity有一个contentAttributeSet属性,我将使用它来将缩略图照片附加到活动中。CSSearchableItemAttributeSet有一些也有的属性NSUserActivity,所以我不确定我应该实现哪一个,或者我是否应该为两者指定相同的数据。我是否设置了titlefor theNSUserActivity以及 the titleon the CSSearchableItemAttributeSet,还是只设置了一个或另一个?同样keywordswhich 也是两者的属性。

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

在与 DTS 就这个话题进行了交谈后,这是他们的结论:

关于keywords可以在 NSUserActivity 和 NSUserActivity 的嵌入式 CSSearchableItemAttributeSet 上设置的属性,例如,Core Spotlight 工程的建议是您只在 CSSearchableItemAttributeSet 上设置它们。

[titledisplayName] 或多或少是相同的,其软含义是,如果该项目有一个很长的标题,它将进入title属性,而缩写的标题将进入 displayName属性。

于 2016-02-21T19:47:54.413 回答
1

如果同时指定了 NSUserActivity 和 CSSearchableItemAttributeSet的title 属性,则

  1. 可以通过两个标题搜索项目。
  2. 搜索结果将具有在 NSUserActivity 实例中指定的标题。

如果指定了 NSUserActivity 和 CSSearchableItemAttributeSet 的关键字属性,则可以使用 CSSearchableItemAttributeSet 实例中指定的关键字而不是 NSUserActivity 实例中指定的关键字来搜索项目。

为 NSUserActivity 或 CSSearchableItemAttributeSet 设置属性时没有冲突。

因此,当将 CSSearchableItemAttributeSet 与 NSUserActivity 一起使用时,我们可以跳过设置 NSUserActivity 类共有的 CSSearchableItemAttributeSet 属性。

于 2016-01-18T08:55:46.740 回答