SiriKit框架详细解析(三)—— 创建Intents App扩展(一)

版本记录

版本号 时间
V1.0 2018.09.11

前言

大家都知道随着人工智能的发展,会掀起来另外一个工业革命,而语音识别就是人工智能的初始阶段,但是每个公司做的都不一样,涉及到一系列的语音的采集和算法实现,苹果的Siri就是业界语音识别的代表性的产品。接下来的几篇我们就详细解析一下SiriKit这个框架。感兴趣的可以看下面几篇文章。
1. SiriKit框架详细解析(一)—— 基本概览(一)
2. SiriKit框架详细解析(二)—— 请求授权使用SiriKit和INPreferences类(一)

Overview

与SiriKit的交互通过您的Intents应用扩展程序进行,您可以在iOS或watchOS应用程序包中进行。 Intents app扩展程序处理与SiriKit的大多数交互,但您的应用程序需要了解这些交互,并且在某些情况下可能会在实现这些交互时发挥积极作用。

配置Xcode项目需要几个步骤。 除了向项目添加Intents应用扩展目标外,您还必须对应用进行一些小的更改。


Enable the Siri Capability - 打开Siri

启用Siri功能可为您的应用添加一组权利。 App Store要求任何包含Intents扩展程序的iOS应用程序或watchOS应用程序都存在这些权利。

在Xcode中打开您的应用程序项目。

  • 1) 在项目设置中,选择适当的目标。 (对于iOS,请选择您的iOS应用目标。对于watchOS,请选择您的WatchKit扩展目标。)
  • 2) 选择Capabilities选项卡。
  • 3) 启用Siri功能。
SiriKit框架详细解析(三)—— 创建Intents App扩展(一)_第1张图片
Figure 1 Enabling the Siri capability in your project

Add an Intents App Extension to Your Project - 为您的项目添加Intents App扩展

添加Intents应用程序扩展目标提供了构建Intents扩展所需的初始文件,并配置您的Xcode项目以构建该扩展并将其包含在您的应用程序包中。

  • 1) 在Xcode中打开现有的应用程序项目。
  • 2) 选择File > New > Target
  • 3) 从iOS或watchOS平台的Application Extension组中选择Intents扩展。
  • 4) 点击下一步。
  • 5) 指定扩展名称并配置语言和其他选项。
  • 6) 对于iOS应用程序,如果您计划自定义Siri界面的某些部分,请启用包含UI Extension选项。
  • 7) 单击完成。

注意:您可以向应用添加多个Intents扩展,但每个扩展必须支持不同的intents。 仅当这样做可以提供性能优势或减少每个扩展的内存占用时,才创建多个扩展。

SiriKit框架详细解析(三)—— 创建Intents App扩展(一)_第2张图片
Figure 2 Adding an Intents app extension to your Xcode project

Specify the Intents that Your Extension Supports - 指定扩展支持的Intents

Intents扩展目标添加到项目后,配置Xcode提供的默认Info.plist文件以指定您支持的意图。 SiriKit使用扩展程序的Info.plist文件中的信息来确定要路由到您的扩展程序的意图。

  • 1) 在Xcode中,选择Intents app扩展的Info.plist文件。
  • 2) 展开NSExtensionNSExtensionAttributes键以显示IntentsSupported键(iOS和watchOS)和IntentsRestrictedWhileLocked键(仅限iOS)。
  • 3) 在IntentsSupported键中,为扩展程序处理的每个intent添加一个String项。将每个项的值设置为intent的类名。
  • 4) 在IntentsRestrictedWhileLocked项中,为要求解锁设备的每个intent添加一个String项。将每个项的值设置为intent的类名。

在iOS中包含IntentsRestrictedWhileLocked键是可选的。您可以使用它来扩充需要解锁设备的意图列表。某些意图(例如涉及金融交易的意图)总是要求解锁用户的设备。对于这些意图,Siri会自动要求用户解锁设备,无论您是否将其包含在IntentsRestrictedWhileLocked键下。在watchOS中,所有意图都要求解锁设备。

重要:您在watchOS应用中支持的意图必须是您在iOS应用中支持的意图的子集。 换句话说,iOS应用中的Intents扩展必须能够处理watchOS应用中Intents扩展所处理的所有相同意图。 在watchOS应用程序中支持意图但在iOS应用程序中没有支持意图这是一种程序的错误。

当用户的话语模糊以至于它解析为多个意图时,SiriKit会使用IntentsSupported键中的意图顺序来确定发送给您的应用的意图。 通过将最相关的那些放在数组前面,先组织您的意图列表。 当Intents扩展支持具有相似语义的多个域时,优先考虑意图尤其重要。 例如,支持电话和消息传递意图的应用程序可能会选择通过发起呼叫来优先发送消息。

某些意图可能需要为您的Xcode项目或您的应用程序执行其他配置步骤。 例如,在实施乘车预订应用程序时,Maps希望您提供描述服务的覆盖范围的GeoJSON文件。 有关任何特殊要求的信息,请参阅参考文档。


测试你的Intents App扩展

Xcode支持直接从Xcode项目启动Intents app扩展,并在模拟器或设备上运行时对其进行调试。 要运行和调试Intents扩展:

  • 1) 选择Intents扩展的构建方案。 (在创建Intents扩展目标时,Xcode会自动为您创建构建方案。)
  • 2) 选择运行代码的target(模拟器或设备)。
  • 3) 选择“产品”>“运行”以开始调试会话。
  • 4) 当Xcode提示时,选择SiriMaps作为要运行的主应用程序。 Xcode构建您的应用和扩展程序,将它们安装在设备上,然后启动您选择的应用程序。

首次安装扩展程序时,Siri可能无法立即识别您的应用程序扩展程序,您可能需要等待几分钟才能发出任何相关命令。 同样,在更新扩展程序的Info.plist文件时,您可能需要等待几分钟,然后Siri才能识别出任何更改。

后记

本篇主要讲述了创建Intents App扩展,感兴趣的给个赞或者关注~~~

SiriKit框架详细解析(三)—— 创建Intents App扩展(一)_第3张图片

你可能感兴趣的:(SiriKit框架详细解析(三)—— 创建Intents App扩展(一))