即使我的应用程序未安装在设备上,我也希望为其编制索引。假设用户搜索了stack
,我希望我的应用显示在结果中。
attributeSet = [[CSSearchableItemAttributeSet alloc]
initWithItemContentType:(NSString *)kUTTypeItem];
attributeSet.displayName = @"my contacts";
attributeSet.title = @"my awesome contacats";
attributeSet.keywords = @[@"contacts", @"contact"];
//Sounds similar to displayName but is not displayed to user
attributeSet.contentDescription = @"my awesome contacts";
image = [UIImage imageNamed:@"balance-cover"];
imageData = [NSData dataWithData:UIImagePNGRepresentation(image)];
attributeSet.thumbnailData = imageData;
CSSearchableItem *item = [[CSSearchableItem alloc]
initWithUniqueIdentifier:@"https://www.notestream.com/streams/562944bd5a2b3"
domainIdentifier:@"notestream.com"
attributeSet:attributeSet];
[[CSSearchableIndex defaultSearchableIndex] indexSearchableItems:@[item]
completionHandler: ^(NSError * __nullable error) {
if (!error)
NSLog(@"Search item(s) journaled for indexing.");
}];
我已经尝试过,但是它是应用程序内索引编制,但是我想要的是在应用安装应用程序应显示在屏幕截图中的搜索结果中。
答案 0 :(得分:0)
我想您可以尝试使用 Spotlight框架。
基本上,如果要在Spotlight中创建可搜索的内容,则必须实现 CoreSpotlight 框架,并且必须使自己熟悉以下条款
CSSearchableItemAttributeSet -指定要在Spotlight中显示的属性(即标题,contentDescription,缩略图)。
CSSearchableItem -此类表示搜索项。我们可以分配一个唯一的标识符来引用该对象,一个域来管理组中的项目,并在其中传递我们为此对象创建的CSSearchableItemAttributeSet的attributeSet。
CSSearchableIndex -一个负责为Spotlight上的内容建立索引的类。它需要一个CSSearchableItem数组。
Here是Apple的应用程序搜索编程指南
我希望这对您有帮助
更新:
如果您的应用未安装在设备上,那么您的应用是否将显示为Spotlight搜索的一部分,取决于有多少用户在搜索您的应用,如果被很多人搜索,则Spotlight将开始显示为建议作为聚光灯搜索结果的一部分。
仅供参考:
当涉及到 Google即时或 Google搜索引擎时,如果您将Firebase应用编入索引,则这些索引将在其搜索结果中显示。
有人在谈论将Firebase应用程序索引与iOS聚光灯搜索集成在一起,但是苹果仍然没有做到这一点。
将来,苹果可能会像竞争对手Google一样,将Firebase应用程序索引之类的东西引入其关注的搜索中。
答案 1 :(得分:0)
很遗憾,在将应用程序安装到设备上之前无法对其编制索引。原因是,索引的工作方式类似于在Web上但在本地设备上的索引。因此,只有在用户打开应用程序后,该应用程序的屏幕才会被编入索引。我已经准备了一个有关此主题的演讲,如果您有兴趣的话,请看一下:https://www.youtube.com/watch?v=saZAN2slQf8