Des's iOS

SiriKit 学习笔记

2016-06-16  本文已影响956人  扬仔360

SiriKit 学习笔记 未完成

这是什么东西,干什么用的就不说了撒、

SiriKit 是如何工作的?

目前 Siri 能支持的服务包括以下部分:

  1. 基于网络的语音/视频通话 (VoIP Calling)
  2. 发送信息 (Messaging)
  3. 支付 (Payments)
  4. 照片搜索 (Searching photos)
  5. 训练 (Workouts)
  6. 预定 (Ride booking)

也就是说,通过 SiriKit 你是可以做上面这些事情,这每一项服务,被称为一个 Intents Domain,可以理解为一个意向域,每个用户向 Siri 传达的指令被识别为一个 Intents,每一个 Intents 都属于一个具体的 Intents Domain。

举个例子🌰,比如你给 Siri 讲:

“Hey siri, 微信告诉 Sean 我明天不去上班了。”

这么一句话,那么你看,其实这个 Intents 其实包含着 四个信息

  1. 微信 -- 调用微信这个APP
  2. 发送消息 -- Intents 的类型是 INSendMessageIntent
  3. Sean -- 消息的接受者
  4. 我明天不去上班啦~!!! -- 消息的具体内容

Siri 获取了前两个消息之后,就确定是哪一个 APP,以及这个 Intents 的类型,然后 去查看咱们的 APP 有没有支持这个 Intents 的 Domain,如果没有支持,Siri 就会告诉你:

“对不起,我好像不明白。”

根据这个 Intents,再去获取具体的参数。那你现在是 Messaging 的 Domain 的 INSendMessageIntent

那么对于 INSendMessageIntent 这一个 Intents 来说,具体的参数就是消息的接受者和消息的内容,也就是后两个信息。

所以我们想要 APP 对接 Siri,只需要做两件事情:

  1. 在应用的 Plist 文件中声明 APP 支持的 Intents Domain
  2. 实现具体的 Intents 方法

Intents Framework & Intents UI Extensions

为了支持 Siri,你需要使用Intents FrameworkIntents UI Framework

技术上讲,其实 Siri 和 Maps 跟我们的 App 交互的时候就是通过两个 Extension 扩展类:

Intents : 这个 Extension 是必须实现的。如同上面的举例,这个 Extension 其实就是 App 对具体的 Intents 的处理的实现,也就是 SiriKit 最核心的一部分。

Intents UI : 标记为 Optional,可以提供也可以不提供,这个东西就是你对 Siri 说话之后 Siri 的那个界面出现的 UI 样式,你可以自定义那个。看需求选择实现。

创建一个 Intents Extension

上面说了,Siri 通过 Intents Extension 来实现跟 App 的交互,INExtension 类就是这个 Intents Extension 的实现。

当我们实现一个具体的 Intents extensions 的时候,INExtension 有常见的三种具体对象:

  1. 用来解析用户的 Intents 的类,获取 Siri 传递过来的 Intents 对象的参数信息
  2. 一个对用户的 Intents 进行 明确确定、再次确认 以及 逻辑处理的对象
  3. 根据处理结果,来对 Siri 的 Intents 进行回应的对象

当 Siri 抛过来一个 Intents,Siri 直接过来找 INExtension 对象。INExtension 对象必须可以对 Siri 扔过来的 Intents 对象进行处理,每一种类型的 Intents 都对应着具体处理的类必须去遵循的 Protocol。

Protocol 中的方法分为三种,跟上面的123类似:

  1. 解析 Siri 传来的具体的 Extents 的方法
  2. 让 Siri 去跟用户再次确认的方法
  3. 一边执行,一边让 Siri 给用户显示结果的方法

如下面的图:


请求用户授权 App 使用 Siri

OK,

上一篇下一篇

猜你喜欢

热点阅读