干货分享干货分享!iOS10 SiriKit QQ适配详解适配详解
1. 概述概述
苹果在iOS10开放了siriKit接口给第三方应用。目前,QQ已经率先适配了Siri的发消息和打电话功能。这意味着在iOS10中你可以直接告诉Siri让它帮你发QQ消息和打QQ电话了,听起来是不是很酷炫?
那么第三方应用使用Siri的体验究竟如何?哪些应用可以接入SiriKit?接入SiriKit又需要做哪些工作呢?这篇文章会为你一一解答这些疑惑。
图1 用Siri发QQ消息效果展示
2. SiriKit简介简介
我们都知道Siri是iphone手机中的智能语音助手,那么什么是SiriKit呢?SiriKit是苹果为第三方应用支持Siri提供的开发框架。在官方文档中,SiriKit将对不同场景的语音支持划分为不同的domain,目
前,SiriKit支持的domain包括:VoIP电话、发消息、转账、图片搜索、网约车订车、CarPlay和餐厅预定,也就是说如果你的应用中包含有这些功能之一,就可以考虑将这些功能接入到SiriKit中啦。
实现SiriKit相关功能时,我们并不需要真正对语音进行识别,语音的识别工作会由Siri完成。Siri识别完语音后,会将语音要完成的功能抽象成Intent对象传递给我们,而我们的接入工作主要是与这些Intent
对象打交道,并不会涉及到自然语言处理(NLP)的技术。
关于SiriKit的开发网上已有一些文章,也可参考苹果的官方文档SiriKit Programming Guide,本文着重介绍QQ的适配经验。
图2 SiriKit原理
3. SiriKit接入接入
要实现SiriKit的功能需要在Xcode工程中添加Intents Extension的target,和其他extension一样, Intents Extension是一个独立于Containing App进程运行的插件,主要用于处理和确认来自siri的intent请
求。如果想让Siri在处理App相关intent时提供一些自定义的界面,那么你就需要再添加Intents UI Extension的target,Intents UI Extension也是一个独立运行的插件(所以要完整的支持SiriKit其实是需要
添加两个target,有点蛋疼)。关于App Extension的开发可以参考苹果的App Extension Programming Guide。
我们以QQ中的发消息功能为例说明一下SiriKit的接入方法:
首先,我们需要在Intents Extentsion的info.plist文件中配置我们需要支持的siri Intents,在IntentsSupported中加入INSendMessageIntent,如果需要在锁屏时禁用某个功能,则再在
IntentsRestrictedWhileLocked中加入相应项的Intent,如图3所示。