ios – 在NSUserActivity上CSSearchableIttributeSet应该使用哪些属性?

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

现在,NSUserActivity有一个contentAttributeSet属性,我将用它来将缩略图照片附加到活动中. CSSearchableItemAttributeSet有一些NSUserActivity也有的属性,所以我不确定应该实现哪一个,或者我应该为两者指定相同的数据.我是否设置了NSUserActivity的标题以及CSSearchableItemAttributeSet上的标题,或者只设置了一个或另一个?与关键字相同,也是两者的属性.

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;

解决方法

如果指定了NSUserActivity和CSSearchableItemAttributeSet的title属性,那么

>项目可通过两个标题进行搜索.
>搜索结果将具有NSUserActivity实例中指定的标题.

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

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

因此,当使用带有NSUserActivity的CSSearchableItemAttributeSet时,我们可以跳过设置NSUserActivity类通用的CSSearchableItemAttributeSet属性.

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...