NSUserActivity
、Core Spotlight APIs
および Web マークアップを同時に使用しようとしています。
したがって、 App Search Programming Guideに記載されている提案に基づいて
3 つの API をすべて使用している場合は、関連する Web ページの 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];
しかし、スポットライトで検索しようとすると、次の 2 つの問題が発生します。
重複したアイテムが表示されます。1 つはアクティビティから、もう 1 つはスポットライト インデックスからです
どちらのアイテムも、設定した画像ではなくアプリのアイコンでのみ表示されます