iOS 探讨之 初探SiriKit

本文深入探讨SiriKit,介绍Intent、Resolve、Confirm等概念,阐述SiriKit的工作流程,包括Intent的解析、确认和处理,以及 Shortscts的实现方式。同时,讨论了Intents UI App Extension的配置和自定义界面限制。
摘要由CSDN通过智能技术生成

阐述

最近研究了一下SiriKit,感觉有点意思,记录并与大家探讨一下。

工欲善其事必先利其器,在研究SiriKit模块时苹果官方介绍通篇充斥着Intent、Resolve、Confirm等词汇,让英语未过六级的我感到无比吃力。感觉词汇还是有必要给大家介绍一下,顺便统一单词说法以便大家能够看懂后续内容。

 

词汇确认:  (箭头后为文章所用含义)

Intent             意图,想法,倾向        —>        意图

Resolve         解决,决心,分解        —>        解析

Confirm         确认,确定,批准        —>        确认

Handle          处理,操作,搬运         —>        处理

 

探讨

1 程序拓展类型

在开始之前,首先介绍一下苹果给我们提供的与SiriKit开发相关的拓展。

这两类拓展都是用来附加额外的业务逻辑处理,当然并不是必须要集成到主程序中(后续有介绍)。

拓展种类:

  • Intents App Extension              Siri意图处理拓展

  • Intents UI App Extension         Siri意图定制界面拓展(可以使用苹果提供的原生界面,或者自定义界面)

 

2 用户 - Siri - [拓展] - 应用 服务流程

2.1 图示层次

上图中的Intents App Extension、Your App services不是必要的,在Siri不需要用户进一步提供信息时可直接与应用交流,当然我们在处理复杂业务的时候(如签到业务需要在Siri界面判断登录逻辑),是需要集成拓展的。

 

2.2 代码层次

当用户向Siri发出请求时,SiriKit会首先通过每个应用的Info.plist文件找到意图(Intent)所属的应用。随后判断该意图(Intent)添加方式是否为直接捐献(Donate)。

若为直接捐献,SiriKit会直接启动应用并在AppDelegate的application(application: continue userActivity: restorationHandler: ) 方法中给开发者通知。

若相反的话,SiriKit会加载当前应用的所有Siri意图处理拓展( Intents App Extension ), 并通过各自拓展的Info.plist文件中NSExtension-NSExtensionAttributes-IntentsSupported对应数组进行匹配,找到对应的拓展并创建该拓展所绑定的INExtension子类实例。INExtension子类实例会调用 handler(for: ) 方法将用户请求分发给开发者针对每个业务所编写的IntentHandler对象。

(该IntentHander不是指系统直接生成的文件,而是指我们针对每个Intent编写的并且遵守每个Intent的IntentHandling协议的类文件。IntentHandling协议定义了处理Intent的必要方法)

 

这里的INExtension子类相当于上图中的程序服务组合包(App services),而每个Intent的专属IntentHandler相当于单个服务的处理对象。

 

注意:

SiriKit处理同一个意图(Intent)请求时,会多次创建对应服务的专属IntentHander对象来执行方法,而不是直接生成一个长久的对象来持续调用,所以不要在对应服务的IntentHandler对象中存储状态信息。

(https://developer.apple.com/documentation/sirikit/dispatching_intents_to_handler_objects)

 

3 单个服务IntentHandler执行过程

Intent的专属IntentHandler对象处理用户请求时会大致分三个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值