我正在尝试同时使用NSUserActivity
,Core Spotlight APIs
和网络标记。
因此基于App Search Programming Guide
中给出的建议如果你正在使用所有三个API,那么使用它的URL就可以了 相关网页作为uniqueIdentifier的值, relatedUniqueIdentifier和webpageURL。
这是我创建项目的方式:
NSUserActivity *activity = [[NSUserActivity alloc] initWithActivityType:@"com.test.product"];
activity.title = self.detailModel.title;
activity.userInfo = @{ @"id" : self.detailModel.productId };
activity.eligibleForHandoff = NO;
activity.eligibleForPublicIndexing = YES;
activity.eligibleForSearch = YES;
activity.webpageURL = [NSURL URLWithString:[self shareUrl]];
activity.contentAttributeSet.contentDescription = self.detailModel.proDesc;
activity.contentAttributeSet.title = self.detailModel.title;
activity.contentAttributeSet.thumbnailData = UIImagePNGRepresentation(image);
activity.contentAttributeSet.relatedUniqueIdentifier = [self shareUrl];
CSSearchableItemAttributeSet *attrSet = [[CSSearchableItemAttributeSet alloc] initWithItemContentType:(NSString *)kUTTypeURL];
attrSet.title = self.detailModel.title;
attrSet.contentDescription = self.detailModel.proDesc;
attrSet.thumbnailData = activity.contentAttributeSet.thumbnailData;
attrSet.relatedUniqueIdentifier = [self shareUrl];
CSSearchableItem *searchableItem = [[CSSearchableItem alloc] initWithUniqueIdentifier:[self shareUrl] domainIdentifier:@"com.test.product" attributeSet:attrSet];
[[CSSearchableIndex defaultSearchableIndex] indexSearchableItems:@[ searchableItem ] completionHandler:^(NSError *_Nullable error) {
if (error) {
DDLogError(@"%@", error.localizedDescription);
} else {
DDLogInfo(@"Core Spotlight indexed");
}
}];
}
}];
self.systemUserActivity = activity;
[self.systemUserActivity becomeCurrent];
但是当我试图在聚光灯下搜索时,有两个问题:
显示重复的项目,一个来自活动,另一个来自聚光灯索引
这两个项目仅显示应用图标而不是我设置的图像