使用iOS 12中的自定义Siri快捷方式构建交互式语音应用
Siri Shortcut是Apple在iOS 12中基于SiriKit框架引入的新API。 它为开发人员提供了为用户在应用程序中经常使用的活动提供自定义快捷方式的方法。 用户通过向Siri发出语音命令来调用快捷方式,可以通过记录与快捷方式关联的自定义短语来自定义实际短语。
自iOS 10中发布SiriKit以来,Apple一直在其提供的多个内置域(例如乘车共享,付款,消息传递等)中限制Siri的使用。开发人员无法选择提供自己的自定义意图。 但是,借助iOS 12中的Siri Shortcut,Apple终于为开发人员提供了框架,供他们构建自己的自定义意图,该意图可以使用至少可以用于Siri Shortcut的自定义参数和响应进行配置。
开发人员创建自定义意图的能力为开发人员打开了许多与Siri进行交互的方式,例如:
- 点东西(例如披萨,咖啡,早餐😋);
- 搜索可以连接到任何API的信息;
- 执行我们希望Siri执行的任何自定义操作;
- 还有很多!
Apple鼓励开发人员仅为用户创建有意义的快捷方式,例如,为用户在使用应用程序时希望重复的活动提供快捷方式。 不建议为用户仅在应用程序中执行一次的活动创建快捷方式。 我真的鼓励大家观看下面的Apple WWDC 2018视频,以从Siri工程师那里了解有关Siri Shortcut的更多信息:
Siri快捷方式简介– WWDC 2018 –视频– Apple Developer
Siri快捷方式是iOS 12中的一项强大新功能,可让您的应用向Siri公开其功能。 这个…
developer.apple.com
使用Siri快捷键构建语音– WWDC 2018 –视频– Apple Developer
Siri快捷方式是帮助人们执行操作或从您的应用程序获取信息的好方法,但是快捷方式可以是…
developer.apple.com
在本文中,我想提供一个简单的示例,说明如何使用Siri Shortcut使用The Movie DB API对即将上映的电影进行搜索,然后使用自定义Intent UI Extension显示结果。
为了使用Siri快捷方式构建演示应用程序,我们将介绍以下内容:
- 创建新项目并设置Podfile。
- 创建共享框架以在主应用程序和扩展之间共享。
- 构建影片列表视图控制器
- 创建Siri意向定义文件
- 创建意图扩展
- 创建意图UI扩展
- 从View Controller捐赠意图。
- 测试捷径
使用Xcode创建新项目,并使用来自终端的pod init
命令初始化Podfile
。 对于依赖性,我们将在显示电影海报缩略图时使用Kingfisher图像下载库来处理图像下载和缓存。
pod'Kingfisher','〜> 4.0'
pod install
之后,从生成的.xcworkspace文件打开项目。
在项目浏览器中单击项目。 在左侧目标内的编辑器区域中,单击+按钮以添加新目标。 从选项中选择Cocoa Touch Framework,然后将框架的名称设置为MovieKit
。 此框架将包含可在App Target和App Intent Extensions之间共享的电影的所有模型,远程存储库和UI组件。 请记住,iOS中的扩展程序在与主应用程序分开的不同进程上运行。
使用可编码创建影片模型
首先,在项目导航器的MovieKit
文件夹中,创建名为Movie
新File。 该文件将包含Movie
, Video
, Cast
和Crew
所有符合Codable
协议的模型,从而使从Movie DB API解码JSON响应更加容易。
在XIB内部,将单元格的大小设置为160x240
。 然后,拖动UIImageView
并为常量的top
, bottom
, top
, bottom
的约束设置常量0
。 接下来,拖动UILabel
进行评级,将字体设置为Caption 1
,并将top
视图的trailing
约束和top
约束常量设置为0
。 最后,拖动标题的UILabel
,将字体设置为Headline
,并将bottom
, trailing
, leading
常量设置为8
,并将行设置为3
。
在MovieCollectionViewCell
内部,连接XIB的所有插座。 我们还为Movie
创建了一个属性,并创建了didSet
观察器以基于Movie
对象中的属性来设置UI
。 要下载图像,我们使用Kingfisher
作为图像库来处理下载和缓存。
对于响应,添加一个名为type
属性作为String
。 然后,设置响应失败和成功模板短语,如下面的屏幕截图所示。
接下来,使用Intents Extension
作为模板创建一个新的Target。 将产品名称设置为MoviesIntent
,并确保选中包括UI扩展复选框。 Xcode也将要求激活构建方案。 确保您确认激活扩展方案。
返回Intent Definition文件,并将创建的扩展名作为Intent类的目标。
打开IntentHandler
文件,这里我们需要使用从Sirikit意向定义文件生成的MoviesIntentHandling
协议来处理意向。 检查意图是否为MoviesIntent
。 然后,我们返回一个MovieIntentHandler
类,该类实现了MovieIntentHandling
来处理意图。
在处理程序内部,我们确保intent中存在endpoint
参数。 然后,通过将成功作为响应代码传递并传递响应类型属性的endpoint
来完成意图。
最后,尝试说出Siri来触发Siri,然后说出您自定义的录制短语来触发快捷方式。
使用SiriKit快捷键构建语音交互式应用程序确实令人惊奇,并且使用SiriKit框架非常简单。 这样,我们可以为用户提供他们想要仅使用自定义语音命令就可以执行的操作的新的简化体验。 我真的相信,人与机器之间的语音交互将在未来几年中变得越来越先进。 技术与艺术之间的这种结合确实使我成为开发人员的心声,可以将这项技术用作构建人员和企业解决方案的基础。
在社交媒体平台上关注我们: Facebook:
facebook.com/AppCodamobile/Twitter:
twitter.com/AppCodaMobileInstagram:
instagram.com/AppCodadotcom