SiriKit 学习笔记

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 给用户显示结果的方法

如下面的图:


image
image

配置项目

添加 Intents Extension

为了支持 SiriKit,给我们的 App 添加 Intents Extension。

  1. 用 Xcode 8 打开项目,然后 File > New > Target
  2. 在弹出来的界面中左边的大类选择第二个(可能已经不是第二个了),也就是 Application Extension,然后右边找Intents Extension
  3. 弹出来的界面自己起名字,然后看这里有一个选择框,如果你要用 Intents UI 的话就选上
  4. 点击 Finish 创建

然后 问你要不要激活这个 scheme,选激活 Activate。

第二步,需要手动去Plist文件中去配置我们 App 需要的 Intents。

  1. 选择你 Intents Extension 里面的 Info.plist
  2. 点开 NSExtensionNSExtensionAttributes,你应该可以看到 IntentsSupportedIntentsRestrictedWhileLocked
  3. IntentsSupported 里面添加你打算支持的 Intents ,应该默认值是 WorkOut 提供的那些。
  4. IntentsRestrictedWhileLocked 里面添加的 Intents,这里的特殊是这些 Intexts 在你的设备没有解锁的时候还可以使用,当然,这项是可选的。

请求用户授权 App 使用 Siri

就好像地图模块请求用定位,推送功能请求通知一样,这个要请求 Siri 的权限,具体做法如下:

  1. 在 App 的 Info.plist 文件中添加 'NSSiriUsageDescription',Value 按照需求写(其实我也想不通怎么说这句话合适...让产品去想吧...)
  2. App 执行的时候调用 INPreference 的类方法 requestSiriAuthorization:

[INPreferences requestSiriAuthorization:^(INSiriAuthorizationStatus status) {
}];

请求用户授权 App 使用 Siri

OK,

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容