iOS 10,其中一个亮点,SiriKit。让App与Siri之间可以通过Extension来进行交互。
看一下相关术语:
Intent:意图
Domain:领域
简介
Siri通过用户语音识别出Intent,App通过Intent做出对应的反应。7个领域共包含22个意图,Siri现在只支持22个意图:
通话服务:打电话、查通话记录
消息短信:发信息、搜索信息
照片搜索:搜索照片、播放照片幻灯片
个人支付:收付款
打车服务:查看附近车辆、订车
健身任务:任务开始、暂停、继续、取消、结束
车载控制:切换音频、空调、除霜等等
App若有相应的能力,可以通过Siri来进行一些交互
交互
通过开发App Extension进行与siri的交互,接收Siri分手确认后的Intent,根据Intent来做逻辑处理
并支持在siri上显示自定义UI
两个框架:
Intents框架,用于开发服务型扩展“Intents Extension”。在此扩展中,完成与Siri的交互,并处理相应的工作。
IntentsUI框架,用于开发UI型扩展“IntentsUI Extension”。在此扩展中,自定义Siri中内嵌的UI界面,展示处理结果。
Intents
Intent对象:对应INIntent类,22个意图对应22个INIntent的子类
Handler对象:处理来自Siri的Intent,一个Handler对应多个Intent,一个Intent只由一个Handler处理。
IntentHandling协议:22个意图对应22个协议,每种协议控制处理Intent的各个过程
Response对象:依然是各自Intent对应各自Response。代表Handler阶段的处理结果
IntentHandling
处理来自Siri的Intent,三个阶段
一:解析阶段,此阶段的方法均已resolve开头
二:确认阶段,此阶段的方法以confirm开头
三:处理阶段,完成我们对应的服务
IntentsUI
还是使用UIKit,可以理解为在siri可以自定义UI,但是一定要注意,我们的自定义界面是无法接收和响应任何的touch信息,所以说,紧紧就是做展示作用。
Intents UI Extension 入口为实现INUIHostedViewControlling协议的VC,
INUIHostedViewControlling协议:
- (void)configureWithInteraction:(INInteraction *)interaction context:(INUIHostedViewContext)context completion:(void (^)(CGSize desiredSize))completion;
官网给出的生命周期很详细:
资料