Siri shortcuts
这东西说难吧,一开始接触还真不好处理,但是理解后,也就那样。
添加intents.intentdefinition
名字自己取,自己喜欢就好

新建custom intents
添加你的intent所含有的参数,如果需要在Siri执行快捷操作时发起交互确认,就勾选User confirmation required。完成添加后编译一下,会生成一个文件,看不到,但实际存在。


新建Intent target和IntentUI target
在新建Intent target时可以一次性将IntentUI target也建好。创建好两个target后,会生成IntentHandler及IntentViewController文件。
创建自己的IntentHandler类,并实现对应的IntentHandling协议
以下DeviceControlIntentHandler代码已完全贴出,虽然对各位没有任何用处,但有助于代码阅读。



强调一遍,勾选这个类适用的target

在IntentHandler中的handlerForIntent方法中,判断需要进入自己自定义的哪种意图,对应意图实现我自己的已经代码贴出,各位自己想怎搞就怎搞!

到此就结束了?并没有,我们要添加和管理意图信息,每个地方调用都把代码写一遍,显然不合理。故将系统方法二次封装,写成自己的工具类。具体代码就不贴了,就是把系统方法封装处理了一下。

好了,到这里就差不多了!
No!
肯定有人会问,你们公司的BLLet库是怎么在Intent中使用的?
我想在Intent中使用第三方库怎搞?我想使用工程里的pch文件怎搞?把自己的爬坑心得在这里表述一下。
多个target同时使用同一个第三方库

使用已有的pch文件

阶段性总结一下:给系统添加快捷操作并不难,坑点在于如何让你的类文件在多个target中同时可以引用。
好吧,忘了很重要的一件事,就是数据库是怎么让Siri执行意图时读到的?
首先要在对应target的Capabilities中打开App Groups选项,groupid要提前在开发者网站上对应的appid下建好

该共享路径是怎么获取呢?
如图,该id即为你创建的groupid,我这边的groupid在上图被我马赛克干掉了。

如果不想用数据库,只是一些简单的字符串什么的持久化存储,那可以用NSUserDefaults

如此,Siri快捷需要用到的操作应该都描述完了。
最后总结:
1.各个类在多个target中的引用需要注意勾选
2.第三方库的引用需要在podfile中添加好才可使用
3.pch文件的使用,需要在对应target中添加好
4.共享存储空间的使用,设置App Groups打开,及设置groupid,这里可以存放数据库等一系列文件
5.一般数据的持久化,使用NSUserDefaults就可以。
好了,到此结束!有疑问的,或觉得我这边写的有问题的,可及时沟通,谢谢!
网友评论