# 【Blog.26.唠嗑.技术】Sirikit

# Sirikit

Sirikit是提供给Apple开发者用于接入Siri的SDK,根据Apple Developer的官网,目前已知可以实现的功能有:

  1. 媒体控制 【Hey Siri,从网易云音乐中播放我的歌单】
  2. 消息发送 【Hey Siri,使用微信发送消息给樊哥说你快递到了】
  3. 清单和日记类 【Hey Siri,记录鸡蛋到奇妙清单的购买列表中】
  4. 车辆控制 【Hey Siri,用Tesla把我的车锁上】
  5. 预约车辆 【Hey Siri,用滴滴出行打车到机场】
  6. 照片查找 【Hey Siri,使用FaceBook查找我上个月的照片】
  7. 支付 【Hey Siri,使用PayPal支付12TWD给NEKO,备注还钱】
  8. 出行\运动 【Hey Siri,使用Keep开始我的跑步】
  9. VoIP呼叫 【Hey Siri,使用Skype呼叫我的群组】
  10. 二维码 【Hey Siri,显示我WhatsApp的个人二维码】
  11. CarPlay控制 【Hey Siri,将我车内温度调整到24度】

看到这里你大概也就知道Sirikit是用来干什么的了

当然,Sirikit是在iOS 10的时候开放的,现在是iOS 13,调戏Siri的方式又更多了

从iOS 12开始,Apple正式的将Shortcuts整合进入了iOS和Siri中,出现了Siri 捷径

# Siri Shortcuts

Shortcuts,中文名为捷径,实际上就是Apple收购Workflow后重新起了名字

它可以允许用户通过创建自定义的捷径片段(脚本)并且运行

Apple的这次整合让Siri Shortcuts诞生了

它可以让用户和开发者自定义触发某功能的语音命令和操作

# NSUserActivity

NSUserActivity允许当用户给Siri下达指令之后,Siri可以打开App的某个界面

例如当你在某App中设定语音指令你好骚啊就带你到达该App的你好骚啊界面之后

当你对Siri说你好骚啊之后,Siri就会打开App,带你到达你好骚啊界面

# Intents

Intents允许App在后台执行,然后返回自定义消息给Siri,并且允许开发者绘制在Siri显示的UI

例如某个App支持Siri捷径,支持让你自定语音指令然后在Siri内返回某城市的公交信息

作为用户,我设定了当我说出上海1056的时候返回1056公交的线路信息

当我对Siri说上海1056的时候,不会被切出Siri,Siri会自动调用App,App收到指令后查询1056的线路信息,然后返回到Siri,Siri再显示到界面上,因为允许开发者自己绘制UI,所以开发者甚至可以在旁边绘制一个小点示意公车目前所在的车站

# 对比

普通的Sirikit和Siri Shortcuts最大的区别在于,一个被开发者提前写好了触发的指令与语法,后一个则是允许用户自定义触发语句

Sirikit的自由度不像Siri Shortcuts这么高,但是并不用用户自己设定指令才可以调用

类似微信,微信接入的Sirikit后,并不需要用户自己开启,你只需要说Hey Siri,使用微信给xxx发消息说xxx就好了

Siri Shortcuts支持来自捷径和其他App的调用,开放性更广

有了Siri Shortcuts,我甚至可以让Siri通过捷径使用SSH连接到我的服务器上激活一些脚本或者命令,十分舒服

因为小米的米家原生并没有支持Homekit (虽然有其他方法接入Homekit),但是米家的App是支持Siri Shortcuts的

这也就意味着虽然小米的米家不支持Homekit,但是我还是可以通过Siri Shortcuts向米家的App发出指令从而操作米家