Xamarin.iOS 中的应用搜索增强功能

本文介绍 Apple 在 iOS 10 中对应用搜索所做的增强,以及如何在 Xamarin.iOS 中实现它们。

在 iOS 10 中,Apple 对应用搜索进行了多项增强,例如众包深度链接、应用内搜索、搜索延续和验证结果可视化。 本文将介绍如何在 Xamarin.iOS 应用中实现这些功能。

关于应用搜索增强功能

iOS 10 中的 Core Spotlight 为应用搜索提供了多项增强功能,例如:

  • 众包深层链接流行度(具有差异隐私)- 提供一种在搜索结果中宣传深层链接应用内容的方法
  • 应用内搜索 - 使用新的 CSSearchQuery 类提供应用内 Spotlight 搜索功能,类似于邮件、消息和便笺应用的工作方式。
  • 继续搜索 - 允许用户在 Spotlight 或 Safari 中开始搜索,然后打开应用并继续该搜索
  • 验证结果可视化 - Apple 的应用搜索 API 验证工具现在可以在执行测试时显示网站标记和深层链接的可视化表示。
  • 消息应用图像共享 - 允许在消息中共享(通过消息应用扩展)提供的热门应用内图像显示在 Spotlight 搜索中

以下部分将更详细地介绍这些主题。

iOS 10 提供了一种机制,用于计算用户关注应用中常用深层链接的频率,并使用此信息来改善应用内容在搜索结果中的排名,同时仍然通过使用“差异隐私”来保护用户的身份。

对于使用 NSUserActivity 对象提供深层链接 URL 并将 EligibleForPublicIndexing 属性设置为 true 的应用,iOS 10 会向 Apple 服务器提交“差异隐私哈希”子集。 然后,此信息将用于在搜索结果中推广常用的应用内内容。

有关在 Xamarin.iOS 应用中实现深层链接的详细信息,请参阅我们的 使用 NSUserActivity 进行搜索文档。

应用内搜索

通过实现新的 CSSearchQuery 类,应用可以提供 Spotlight 的搜索和匹配规则技术来查找自身内部的内容,而无需用户离开应用(类似于邮件、消息和笔记应用的工作方式)。

通常,支持 CSSearchQuery 的应用不需要维护自己的单独搜索索引。

搜索延续

在 iOS 9 中,Apple 引入了搜索 API(例如 Core Spotlight、NSUserActivity 和 Web 标记),以在应用中提供对内容的深度关注,以允许用户使用 Spotlight 和 Safari 搜索界面搜索该内容。 有关更多详细信息,请参阅我们的“新搜索 API”文档。

在 iOS 10 中,Apple 在此功能之上,使用户可以在 Spotlight 或 Safari 中启动搜索,然后在打开应用时继续搜索。

若要实现此功能,请编辑应用的 Info.plist 文件,添加 布尔类型的 CoreSpotlightContinuation 键,并将其值设置为 YES

若要响应用户继续搜索结果 (NSUserActivity),请编辑 AppDelegate.cs 文件并重写 ContinueUserActivity 方法。 例如:

public override bool ContinueUserActivity (UIApplication application, NSUserActivity userActivity, UIApplicationRestorationHandler completionHandler)
{

    // Take action based on the activity type
    switch (userActivity.ActivityType) {
    case "com.xamarin.platform":
        // Restore the state of the app here...
        break;
    default:
        if (userActivity.ActivityType == CSSearchQuery.ContinuationActionType) {
            var search = userActivity.UserInfo.KeyForValue(CSSearchQuery.QueryString);
            // Continue user's search here...
        }
        break;
    }

    return true;
}

此代码查找查询延续操作类型 (userActivity.ActivityType == CSSearchQuery.ContinuationActionType),然后从 NSUserActivity 类的用户信息字典 (userActivity.UserInfo.KeyForValue(CSSearchQuery.QueryString)) 读取用户的当前查询。 在此处,应用需要采取措施才能继续用户的搜索。

有关在 Xamarin.iOS 应用中使用搜索的详细信息,请参阅我们的 Core Spotlight 搜索文档。

验证结果的可视化效果

Apple 的应用搜索 API 验证工具现在会显示网站标记和深层链接(包括在 Schema.org 定义的标记)的视觉表示形式。

通过使用验证工具,开发人员可以查看 Applebot Web 网络爬虫为网站索引的信息,如标题、描述、URL 以及其他支持的元素。

有关使用 Web 标记的详细信息,请参阅我们的“使用 Web 标记进行搜索”文档。

消息应用图像共享

如果消息应用扩展提供用于在消息中共享的图像,则可以对扩展进行配置,使用户无需离开应用即可在“消息”中执行 Spotlight 搜索热门图片。

若要启用此功能,请执行以下操作:

  1. 创建消息应用扩展。
  2. com.apple.developer.associated-domains 添加到应用的权利,并包含信息应用程序扩展共享的图片所在的 web 域列表。 对于每个域,请指定 spotlight-image-search 服务。
  3. apple-app-site-association 文件添加到托管图像的网站。 此文件包括 spotlight-image-search 服务的字典,并包括应用的 ID,即团队 ID 或应用 ID 前缀,后跟捆绑 ID。 该文件最多可包含 500 个路径和模式,这些路径和模式将由 Spotlight 编制索引,并包含在热门图像搜索中。 有关详细信息,请参阅 Apple 的“创建和上传关联文件”文档。
  4. 允许 Applebot 爬取网站。 请参阅 Apple“关于 Applebot”文档。

有关更多详细信息,请参阅我们的“消息应用集成”文档。

总结

本文介绍了 Apple 在 iOS 10 中对应用搜索所做的增强,以及如何在 Xamarin.iOS 中实现它们。