【问题标题】:Can apps provide a hook for Spotlight to search content within the app?应用程序能否为 Spotlight 提供一个挂钩来搜索应用程序内的内容?
【发布时间】:2013-07-30 15:41:16
【问题描述】:

示例:应用程序包含消息。用户使用消息中的字符串搜索聚光灯。 Spotlight 会找到该应用程序。

我听说 Spotlight 可以搜索应用内容。但是如何在 iOS 上将其提供给 Spotlight?

【问题讨论】:

标签: iphone ios ipad spotlight


【解决方案1】:

根据Core Data Spotlight Integration Programming Guide,您想要的功能不适用于iOS,仅适用于Mac OS X。

【讨论】:

  • 这已随着 iOS9 的更新而改变。现在有搜索 API 可以将应用内容添加到 Spotlight。请在下面查看我的答案。
【解决方案2】:

现在可以从 iOS9 开始。

Apple 发布了 CoreSpotlight SDK (WWDC2015),您可以在其中将您的应用程序集成到 iOS 的聚光灯下,并可以进行内容搜索。

还有其他可能的途径可以将不同的用户活动实际集成到您的应用中,并且即使您的应用未安装在设备上,也可以搜索事物。

例如,如果您的应用是处理 pdf 的应用,如果用户在他的设备上搜索 pdf,那么即使您的应用是未安装在用户的设备上。

考虑到您的示例,现在如果您在 Spotlight 中搜索消息字符串,Spotlight 可以打开您的应用,您可以让用户实际导航以在您的应用中找到确切的消息。

在下面添加链接: 您可以找到实施的详细信息。

https://developer.apple.com/library/prerelease/ios/releasenotes/General/WhatsNewIniOS/Articles/iOS9.html#//apple_ref/doc/uid/TP40016198-SW3

-光辉

【讨论】:

  • 这意味着对于与我们的应用程序相关的所有可能的搜索词,需要在 CSSearchableIndex 中添加为 SearchableItem?
  • 简短回答:是的。长答案:搜索实际上让您可以更好地控制您需要在应用程序内容中搜索的内容。因此,您必须通过添加 CSSearchableItem 来索引您需要从聚光灯中搜索的每个对象。
  • 在我的回答中添加了一个链接。您可以获取有关条款的更多详细信息。
【解决方案3】:

以下是通过新的 Search API 将您的应用内容添加到 Spotlight 的示例。这在使用 XCode 7 的 iOS9 上可用。

CSSearchableItemAttributeSet * attributes = [[CSSearchableItemAttributeSet alloc] initWithItemContentType:(NSString *)kUTTypeImage]; //Or whatever type
attributes.contentDescription = @"This is my content description.";
attributes.displayName = @"Display Name";
attributes.keywords = @["Stuff","Widget"];
attributes.subject = @"Subject";
attributes.title = @"Title";

CSSearchableItem *item = [[CSSearchableItem alloc] initWithUniqueIdentifier:someUniqueId domainIdentifier:@"SomeGroupName" attributeSet:attributes];

[[CSSearchableIndex defaultSearchableIndex] indexSearchableItems:@[item] completionHandler:nil];

当用户选择聚光灯下的项目时,如下方法:

-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *))restorationHandler

在您的 AppDelegate 中将被调用。检查 userActivity 对象中的 userInfo 字典并将用户发送到相应的屏幕。

【讨论】:

  • 那么这里的搜索是如何工作的......用户应该搜索标题或关键字?
  • 其中任何一个都可以。标题、关键词、主题都变成了关键词。
【解决方案4】:

我创建了一个示例项目来集成 corespotlgiht 功能。它适用于 iOS 9,需要 Xcode 7 beta 2 来构建。你可以试试看有没有帮助。 https://github.com/majain/iPhoneCoreDataRecipes

视频链接为:https://youtu.be/Renm1xLDIFc

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-05
    • 1970-01-01
    • 2010-12-11
    相关资源
    最近更新 更多