适用于iOS开发人员的WWDC 2018:Siri快捷方式

Apple在2016年发布了SiriKit,作为您的应用程序与Siri一起使用的一种方式。 我真的很兴奋,因为它为用户创造了一种与手机互动的全新方式。 他们不再局限于触摸(手势,力度,键盘)了。 相反,他们最终可以在支持它的任何应用程序中使用自己的声音。 那时,当我沉迷于这个想法时,我意识到,事实并非如此。 SiriKit的使用仅限于6类,即:

  • 讯息传递
  • VoIP通话
  • 付款
  • 乘车预订
  • 图片搜寻
  • 锻炼

这真烂。 我很沮丧,也没有深入研究它,因为我的名单上没有项目可以从中受益。

快进到2018年。周一,苹果公司在其主题演讲中终于宣布了一种与Siri进行交互的新方式。 它称为Siri快捷方式。 让我们深入研究iOS开发人员如何使用它们。

捷径

那么什么是Siri快捷方式? 它们是Siri可以预测并在Spotlight搜索,锁定屏幕等位置提供给用户的操作。您的应用可以在用户与Siri交互时将这些操作提供给Siri。 例如,当用户在您的商店订购咖啡时,您的应用可以向Siri提供带有订购信息的操作。 随着时间的流逝,Siri将了解用户是否多次执行此操作,并将开始建议您的应用提供的操作。 这样,可以从锁定屏幕订购咖啡。 那不是很好吗?

那不是全部! 用户甚至可以使用这些快捷方式添加个性化语音短语。 因此,下次您告诉Siri“胡言乱语”时,Siri将点您的咖啡。

但是我们该怎么做呢?

快速方法

如果您已经在使用NSUserActivity,则可以使用一行代码使它们符合Siri的预测:

  userActivity.isEligibleForPrediction = true 

但是快捷方式可能更强大。 因此,让我们看看自定义快捷方式是如何工作的。

应用程式结构

和以前使用SiriKit一样,我们需要对应用程序进行Intent应用程序扩展。 该扩展将处理将在后台运行的快捷方式。 此外,Apple建议将扩展程序和应用程序之间共享的代码拆分为框架。 该框架应包含所有管理和捐赠快捷方式的代码。

创建快捷方式

查看您的应用并查看最常发生的操作。 让我们看一下可以播放音乐的健身应用程序。 每当您开始锻炼时,您都想听音乐。 因此,该应用可以向Siri捐赠相应的快捷方式。 现在,只要Siri检测到用户开始锻炼程序,它就可以建议通过您的应用播放音乐。 当然,Siri必须先学习它,因此在Siri提出这些建议之前,必须进行一些锻炼。 我做舞厅舞。 由于我总是从开始就开始练习慢速华尔兹15分钟以进行热身,因此我的应用程序可以创建一个快捷方式,建议您精确地进行此操作并将其捐赠。

在研究如何捐赠快捷方式之前,让我们看看如何创建快捷方式。

首先,我们需要一种新型的意图。 意图是用于与Siri通信的对象。 在我们的案例中,系统未提供此类意图,因此应用必须提供自定义意图。 这可以通过将Intent Definition文件添加到项目中来完成。

在其中,您可以定义您的自定义意图。 我们称之为“ DancePracticeIntent”。

该意图具有2个参数:

  • 舞蹈练习
  • 以及持续时间,之后它将自动停止播放。

此外,我们可以使用这些参数来定义不同的快捷方式。 以我为例:

  • 跳舞(没有持续时间意味着无限)
  • 跳舞,持续时间。

Siri使用这些类型来识别用户发出的“播放20分钟探戈”或“播放慢速狐步”的请求。

我们可以将每个快捷方式标记为支持后台执行,因此在执行快捷方式时不会打开该应用,并且用户将停留在其锁定屏幕上。

在意图定义文件中定义了我们的自定义意图之后,Xcode可以为我们生成相应的源代码。 但是,由于我们共享代码,因此必须指定哪个目标具有生成的代码,否则,将为所有目标生成该代码。 这可以在目标设置中完成。 将框架设置为并将所有其他目标设置为

捐赠捷径

完成所有这些操作后,我们终于可以捐赠我们的快捷方式了。 每当用户开始与我们的应用程序进行相应的交互时,我们只需创建相应的意图即可。 这将用于创建INInteraction,最终可以捐赠我们的快捷方式。 由于这种措辞,行动也可以称为捐赠。

这还将包含带占位符的预定义文本。 要将响应传递给用户,请使用IntentHandlers confirm()或handle()方法的完成处理程序。

相关捷径

如前所述,应用程序建议我一开始练习就播放音乐。 为此,有相关的快捷方式。 您可以将INIntent添加到INRelevantShortcut并添加RelevanceProvider。 在我们的例子中,它将是一个LocationProvider,它基本上告诉Siri在到达特定位置时显示此相关的快捷方式。

向Siri添加短语

最后但并非最不重要的一点是,开发人员可以为用户提供添加自定义短语的功能。 这些可用于与您的应用进行交互。 我上面的例子是“胡言乱语”。 使用哪个短语取决于用户,但是我们可以提出建议。 由于取决于用户,因此碰撞问题不是我们的问题😉

要记录一个短语,我们必须创建一个INUIEditVoiceShortcutViewController并将自己设置为委托。 这样,我们可以处理新的或更改的VoiceShortcut。

结论

这是这个令人兴奋的新API的简短概述。 用户最终可以以更多方式与每个应用程序进行交互。 我很好奇开发人员将以何种方式使用它,我真的很想听听您打算使用Siri Shortcuts做些什么。

为全面起见,Apple将上面支持的意图域的列表增加到12:

  • 讯息传递
  • 清单和注释
  • 锻炼
  • 付款方式
  • VoIP通话
  • 媒体
  • 可视代码(使用快速响应(QR)代码传达联系和付款信息。)
  • 相片
  • 订车
  • 汽车命令(管理车门锁等)
  • CarPlay(与车辆的CarPlay系统交互)
  • 餐厅预订

尽管如此,快捷方式还是最重要的。

更多资源

  • https://developer.apple.com/documentation/sirikit
  • https://developer.apple.com/documentation/sirikit/donating_shortcuts
  • https://developer.apple.com/documentation/sirikit/deleting_donated_shortcuts
  • https://developer.apple.com/videos/play/wwdc2018/211/