应用程序可以为Spotlight提供一个钩子来搜索应用程序内的内容吗?

时间:2013-07-30 13:09:00

标签: iphone ios ipad spotlight

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

我听说聚光灯可以搜索应用内容。但是如何将它提供给iOS上的Spotlight?

4 个答案:

答案 0 :(得分:8)

根据Core Data Spotlight Integration Programming Guide,您所需的功能不适用于iOS,仅适用于Mac OS X.

答案 1 :(得分:4)

现在可以从iOS9开始实现。

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

还有其他可能的渠道可以将不同的用户活动实际集成到您的应用中,即使您的应用未安装在设备上,也可以搜索内容。

如果你的应用程序是一个处理pdf的应用程序,如果用户在他的设备上搜索pdf,你的应用程序可以作为他可以用来阅读pdf的应用程序出现在聚光灯首选项中,即使你的应用程序是没有安装在用户的设备上。

考虑到您的示例,现在可能的是,如果您在聚光灯下搜索消息字符串,聚光灯可以打开您的应用,您可以让用户实际导航以在您的应用内找到确切的消息。

添加以下链接: 您可以找到实施细节。

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

-Tejas

答案 2 :(得分:1)

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

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字典,并将用户发送到适当的屏幕。

答案 3 :(得分:1)

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

相同的视频链接是:https://youtu.be/Renm1xLDIFc