3

NSUserActivityCore 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 つはスポットライト インデックスからです

  • どちらのアイテムも、設定した画像ではなくアプリのアイコンでのみ表示されます

4

0 に答える 0