关于iOS端集成Siri Shortcuts网上看了很多都是Swift的教程,苹果官方给的例子代码也是Swift的,不熟悉Swift的人看起来还是有点困惑,今天给大家介绍下关于怎样集成基于Objective-C的Siri Shortcuts,简单粗暴。
先看一些基本的概念吧,首先创建一个Siri Shortcuts有两种方式,分别是:
NSUserActivity的方式比较粗,而且不够精确优雅,这里不作讨论,有兴趣的同学可以去看苹果官方文档和视频这里重点介绍下Intents的方式。
Intents创建Siri Shortcuts大致步骤如下:
0. 准备
打开主target的SiriCapabilities
添加Intents Extension
File -> New -> Target -> Intents Extension
1. Define Shortcut
添加Intents文件
File -> New -> File..., 选择 SiriKit Intent Definition File
配置Instents文件
点击左下角加号 -> New Intent -> 命名(XXXname,我这里用的BreakFast)
填写Title和Description, Intent和Response分别有对应的Title和Description, 另外Response中配置的模板编译成功后会生成相应的API,下文会提到(截图BreakFastHandler.m)。
选择Category为Order(Category有很多种,不同的Category在和Siri交互的时候有不同的文字提示,按钮样式和语音提示,请看官方介绍)
编译
编译成功后会自动生成对应的一系列类和方法,后面会用到,这里需要注意的是Objective-C在Import对应的类可能没有提示,一般不用管直接import就行了,类名就是XXXnameIntent、XXXnameHandler等等,可以在Macintosh HD ▸ Users ▸ <user> ▸ Library ▸ Developer ▸ Xcode ▸ DerivedData ▸ <project-id> ▸ Build ▸ Intermediates.noindex ▸ <project>.build ▸ Debug-iphoneos ▸ <project>.build ▸ DerivedSources ▸ IntentDefinitionGenerated ▸ Intents中看到,也可以在右边栏中找到如图
指定Target
苹果官方推荐的使用方法是提取一个公共的framework,方便extension和target使用
修改plist
准备阶段创建的Extension文件夹下的Info.plist文件,如下图
2. Donate Shortcut
在任何合适的地方Donate Shortcuts给系统,代码如下:
3. Handle Shortcut
新建一个BreakFastHandler继承自NSObject,用于接收我们自定义的Intent
在Extansion目录下IntentHandler.m中把我们的Handler加进去
done~
Intent方式优点
1.不用打开App也能以多种方式交互
2.自定义交互的声音和UI
3.可以智能推荐,比如在某个特定的时间和地点推荐特定的Shortcuts(市场上很多App都可以做这一块的功能但是都没做)
这里需要注意的是Siri Shortcuts虽然很棒但是不能滥用哦。
欢迎小伙伴们在评论区交流~