iOS 10,其中一个亮点,SiriKit。让App与Siri之间可以通过Extension来进行交互。

看一下相关术语:

  • Intent:意图

  • Domain:领域

简介

Siri通过用户语音识别出Intent,App通过Intent做出对应的反应。7个领域共包含22个意图,Siri现在只支持22个意图:

  • 语音通话 VoIP Calling:打电话、发起视频电话、查通话记录

    信息 Messaging:发信息、搜索信息

    照片搜索 Photo Search:搜索照片、播放照片幻灯片

    个人之间的付款 Payments:向某人付款、向某人收款

    健身 Workouts:开始健身、暂停健身、恢复健身、结束健身、取消健身

    打车 Ride Booking:查看附近可用的车辆、订车、查看订单

    车载 CarPlay:切换音频输入源、空调、除霜、座椅加热、FM调台

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开头

  • 三:处理阶段,完成我们对应的服务

1.png

IntentsUI

还是使用UIKit,可以理解为在siri可以自定义UI,但是一定要注意,我们的自定义界面是无法接收和响应任何的touch信息,所以说,紧紧就是做展示作用。

Intents UI Extension 入口为实现INUIHostedViewControlling协议的VC,

INUIHostedViewControlling协议:

- (void)configureWithInteraction:(INInteraction *)interaction 
                         context:(INUIHostedViewContext)context 
                      completion:(void (^)(CGSize desiredSize))completion;

官网给出的生命周期很详细:

2.png

资料

22个意图对应的描述

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐