App搜索编程指南(三) —— 让项目可索引之索引活动和导航点(一)

App搜索编程指南(三) —— 让项目可索引之索引活动和导航点(一),第1张

NSUserActivity 类提供的方法允许您捕获用户先前访问过的特定应用程序状态和导航点,然后使用 Handoff 恢复它们(有关在应用程序中启用Handoff的详细信息,请参阅 Handoff Programming Guide )。 在iOS 8及更高版本中运行的应用程序中,用户希望Handoff帮助他们在一台设备上启动活动并在另一台设备上继续活动。

除了支持 Handoff 之外,在iOS 9及更高版本中使用 NSUserActivity 还可以:

要提供最佳搜索结果,请避免一次创建多个 NSUserActivity 对象。 另请注意,NSUserActivity类不用于帮助您索引应用中的任意数据。 如果要索引特定于应用程序的数据,请使用 Core Spotlight 框架的API并使用相应的 relatedUniqueIdentifier 将索引项链接在一起(有关详细信息,请参阅 Index App Content )。

使用 NSUserActivity API还可以利用Siri建议和智能提醒。 Siri建议显示在Spotlight搜索屏幕中,可包含可搜索的活动。 (请注意,只有具有高参与率的活动才有资格包含在Siri建议中。有关参与的更多信息,请参阅 Combine APIs to Increase Coverage 。)用户可以使用Siri智能提醒来提醒您与应用相关的特定内容。 当用户收到智能提醒时,他们指定的活动会显示在提醒中。

当用户使用您的应用程序时,您可以创建与各种导航点和应用程序状态关联的活动对象。 默认情况下,每个项目都会添加到设备上的索引中。 在iOS 9及更高版本中,将公共项目标记为符合公共索引的条件也会将其添加到设备上索引并带来额外的优势:当您使用网络标记使您的相关网站内容可搜索时,用户参与公开符合条件的您的应用中搜索结果,可以帮助您提高网站内容的排名。 当用户在Spotlight搜索结果中点按可搜索的活动或状态时,您可以使用NSUserActivity API继续活动并将用户返回到应用中的相关区域。

要使活动或导航点可搜索,请创建一个 NSUserActivity 对象来表示它。 使用NSUserActivity属性标识项目的类型,提供描述项目的元数据,并使其符合搜索条件。 将项目设置为符合搜索条件意味着当项目变为当前项目时,该项目将添加到设备上的索引。 Listing 3-1 显示了如何创建活动。

尽管 Listing 3-1 中未显示,但 NSUserActivity 还定义了 contentAttributeSet 属性,该属性允许您指定描述项目所需的任意数量的属性。 contentAttributeSet 属性采用 CSSearchableItemAttributeSet 对象,该对象是 Core Spotlight 对象,用于提供可索引的元数据以丰富搜索结果。 Core Spotlight定义了大量属性,用于指定多个主题区域中的元数据,例如媒体,事件和消息。 只需要 title , userInfo 和 contentAttributeSet 属性,但为了给用户提供最佳体验,建议您为尽可能多的属性提供值。 特别是,建议您始终为 thumbnailData 和 contentDescription 属性提供特定于内容的值。 有关可以使用的完整属性列表,请参阅 CSSearchableItemAttributeSet Class Reference 。

图3-1显示了如何使用三个常用属性来提供有关可搜索项目的元数据。

特别值得一提的是三个 NSUserActivity 属性:

默认情况下,活动是私有的 当您设置项目的 qualifiedForPublicIndexing 属性并使用网络标记来搜索您的相关网站内容时,用户与该项目的互动有助于提高您网站内容的排名。 要了解有关使用Web标记的更多信息,请参阅 Mark Up Web Content 。

如果未正确设置 expirationDate 属性,系统会在一段时间后自动使活动到期。

当您的应用内容在您的网站中也可用且您在应用中使用NSUserActivity API并在您的网站中使用网络标记时, webpageURL 属性非常有用。特别是,您可以使用 webpageURL 属性来避免对同一项重复索引(要了解更多信息,请参阅 Combine APIs to Increase Coverage )。设置 webpageURL 属性时,还要使用必须存储的 userInfo 字典的键设置 requiredUserInfoKeys 属性。如果未设置 requiredUserInfoKeys 属性,则在恢复活动时 userInfo 字典将为空。

当用户执行活动或进入与您创建的 NSUserActivity 对象关联的应用程序状态时,您的应用程序会调用 becomeCurrent 方法将活动标记为当前。符合搜索条件的当前活动会自动添加到私有设备上的索引(即 CSSearchableIndex )。此外,您可以在搜索结果中启用用户 *** 作,例如拨打电话号码或获取到某个位置的路线(要了解如何执行此 *** 作,请参阅 CSSearchableItemAttributeSet Class Reference 中的 Supporting Actions )。

为了保证活动及其元数据被编入索引,您必须对活动保持强引用,直到将其添加到索引中。有两种方法可以执行此 *** 作:第一种方法是将活动分配给创建活动的控制器对象中的属性。第二种方法是使用 UIResponder 对象的 userActivity 属性。如果使用第二种方式,则需要在 updateUserActivityState: 方法中设置元数据 - 例如 userInfo 属性中的信息。否则,您在活动中设置的元数据将不会保留。

如果您希望某个活动符合搜索条件但不适用于设备之间的 Handoff ,请将 eligibleForSearch 属性设置为 true ,并将 eligibleForHandoff 属性设置为 false 。

使用 Core Spotlight API删除使用 NSUserActivity 编制索引的项目。使用NSUserActivity和Core Spotlight API对项目建立索引并使用 relatedUniqueIdentifier 属性连接项目时,使用Core Spotlight API删除项目会使该活动不符合索引条件。有关使用 relatedUniqueIdentifier 属性的更多信息,请参阅 Combine APIs to Increase Coverage 。

当用户点击您添加到索引的 NSUserActivity 项目的搜索结果时,您的应用程序应该打开并恢复与该项目关联的上下文。 为此,您的app委托实现了 application:continueUserActivity:restorationHandler: ,检查传入活动的类型,以查看应用程序是否正在打开,因为用户点击了搜索结果中的索引项。 application:continueUserActivity:restorationHandler: 方法与您当前使用 Handoff 继续活动的方法相同。

Listing 3-2 显示了 application:continueUserActivity:restorationHandler: 的主要实现框架。

开启手机“Spotlight”功能中的“查询建议”和“搜索建议”选项即可恢复。

具体步骤如下:

1、打开手机,找到“设置”,点击进入。

2、找到“通用”,点击进入。

3、找到“Spotlight”,点击进入。

4、开启“Spotlight”选项中的“查询建议”和“搜索建议”即可。

5、将Spotlight搜索中的查询建议栏键往左滑动关闭,绿色为开启状态,灰色为关闭状态。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11480593.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存