最近在看SiriKit的官方文档,自啃 + Google翻译,如有错误或语义不当还望指出。
App通过特定域(domains)集成Siri或Maps,这些域定义了App可以支持的行为类别。每个域包含一个或多个特定意图供你处理。你不需要支持给定域中的所有意图,但是建议你尽量支持一个域里的所有意图。
你的Intents扩展和Intents UI扩展的Info.plist文件必须声明它们支持的意图。有关配置Intents扩展的Info.plist文件的信息,参阅Configuring Your Xcode Project。有关配置Intents UI扩展的Info.plist文件的信息,参阅Creating an Intents UI Extension。
VoIP呼叫
为用户提供音频或视频通话的应用可以使用此意图启动通话以及搜索用户的通话记录。表6-1列出了你可以实现的意图类型以及在Intents扩展中支持的类和协议。当在锁定的设备上执行时,系统会自动提示用户在搜索用户的通话记录之前解锁设备。根据你发起音频或视频呼叫的方式,系统还可能要求用户解锁设备,以便启动你的App。
表6-1 VoIP呼叫意向
用户意图 | 对象 |
---|---|
发起语音电话 | Handler: INStartAudioCallIntentHandling protocol Intent: INStartAudioCallIntent Response: INStartAudioCallIntentResponse |
发起视频电话 | Handler: INStartVideoCallIntentHandling protocol Intent: INStartVideoCallIntent Response: INStartVideoCallIntentResponse |
搜索用户通话记录 | Handler: INSearchCallHistoryIntentHandling protocol Intent: INSearchCallHistoryIntent Response: INSearchCallHistoryIntentResponse |
如果使用单个处理程序对象来支持所有的调用处理意图,则你的处理程序可以采用INCallsDomainHandling 协议,而不是单独采用每个协议。
重要
当支持VoIP呼叫意向时,强烈建议你也采用对CallKit的支持。Siri与CallKit结合能提供更一体化的呼叫体验。当一个扩展使用CallKit发起呼叫时,Siri允许CallKit处理发出呼叫的详细信息。对于不支持CallKit的App,Siri必须在前台启动App。有关使用CallKit的更多信息,参阅CallKit Framework Reference。
消息
在用户之间提供消息传递的App可以使用意图发送消息并搜索用户接收的消息。表6-2列出了你可以实现的意图类型以及在Intents扩展中支持的类和协议。消息意向不会自动要求用户解锁设备后使用。
表6-2消息意向
用户意图 | 对象 |
---|---|
发送消息 | Handler:INSendMessageIntentHandling protocol Intent:INSendMessageIntent Response:INSendMessageIntentResponse |
搜索消息 | Handler:INSearchForMessagesIntentHandling protocol Intent:INSearchForMessagesIntent Response:INSearchForMessagesIntentResponse |
设置消息上属性 | Handler:INSetMessageAttributeIntentHandling protocol Intent:INSetMessageAttributeIntent Response:INSetMessageAttributeIntentResponse |
如果使用单个处理程序对象来支持每个消息意图,则你的处理程序可以采用INMessagesDomainHandling 协议,而不是单独采用每个协议。
付款
提供用户到用户付款服务的应用可以使用意图发送或请求付款。表6-3列出了你可以实现的意图类型以及在Intents扩展中支持的类和协议。当在锁定的设备上执行时,系统会自动提示用户在完成任何付款相关请求之前解锁设备。
表6-3支付意向
用户意图 | 对象 |
---|---|
向另一个用户发起付 | Handler:INSendPaymentIntentHandling protocol Intent:INSendPaymentIntent Response:INSendPaymentIntentResponse |
向另一个用户发起收款 | Handler:INRequestPaymentIntentHandling protocol Intent:INRequestPaymentIntent Response:INRequestPaymentIntentResponse |
如果使用单个处理程序对象来支持这两个支付意向,则你的处理程序可以采用INPaymentsDomainHandling 协议,而不是单独采用每个协议。
照片
管理照片的应用可以使用意图来搜索照片或显示照片。表6-4列出了你可以实现的意图类型以及在Intents扩展中支持的类和协议。在锁定的设备上执行时,系统会在完成任何照片相关请求之前自动提示用户解锁设备。
表6-4照片意向
用户意图 | 对象 |
---|---|
搜索照片 | Handler:INSearchForPhotosIntentHandling protocol Intent:INSearchForPhotosIntent Response:INSearchForPhotosIntentResponse |
播放照片幻灯片 | Handler:INStartPhotoPlaybackIntentHandling protocol Intent:INStartPhotoPlaybackIntent Response:INStartPhotoPlaybackIntentResponse |
如果使用单个处理程序对象来支持这两个照片意向,则你的处理程序可以采用INPhotosDomainHandling 协议,而不是单独采用每个协议。
锻炼
管理健身活动的App可以使用意图启动、结束和管理锻炼。表6-5列出了你可以实现的意图类型以及在Intents扩展中支持的类和协议。当在锁定的设备上执行时,系统自动地提示用户解锁设备,使得其可以启动锻炼应用。
表6-5锻炼意向
用户意图 | 对象 |
---|---|
开始锻炼 | Handler:INStartWorkoutIntentHandling protocol Intent:INStartWorkoutIntent Response:INStartWorkoutIntentResponse |
暂停锻炼 | Handler:INPauseWorkoutIntentHandling protocol Intent:INPauseWorkoutIntent Response:INPauseWorkoutIntentResponse |
恢复锻炼 | Handler:INResumeWorkoutIntentHandling protocol Intent:INResumeWorkoutIntent Response:INResumeWorkoutIntentResponse |
结束锻炼 | Handler:INEndWorkoutIntentHandling protocol Intent:INEndWorkoutIntent Response:INEndWorkoutIntentResponse |
取消锻炼 | Handler:INCancelWorkoutIntentHandling protocol Intent:INCancelWorkoutIntent Response:INCancelWorkoutIntentResponse |
如果使用单个处理程序对象来支持所有意图,则你的处理程序可以采用INWorkoutsDomainHandling 协议,而不是单独采用每个协议。
乘车预订
提供交通服务的App可以使用意图进行乘车预订,并提供有关这些乘车预订的信息。乘车预订意图可能源于Siri或Maps,乘车预订意图都可以用相同的方式处理。表6-6列出了你可以实现的意图类型以及在Intents扩展中支持的类和协议。强烈建议你支持所有可用的意图。当在锁定的设备上执行时,系统自动提示用户在列出乘车选项或预订乘车之前解锁设备。获取乘车预订的状态不会自动要求用户的设备解锁。
表6-6乘车请求意向
用户意图 | 对象 |
---|---|
列出所有可预定车辆 (Maps only) | Handler:INListRideOptionsIntentHandling protocol Intent:INListRideOptionsIntent Response:INListRideOptionsIntentResponse |
预定车辆 | Handler:INRequestRideIntentHandling protocol Intent:INRequestRideIntent Response:INRequestRideIntentResponse |
获取预定车辆的当前状态 | Handler:INGetRideStatusIntentHandling protocol Intent:INGetRideStatusIntent Response:INGetRideStatusIntentResponse |
如果使用单个处理程序对象来支持所有意图,则你的处理程序可以采用INRidesharingDomainHandling 协议,而不是单独采用每个协议。
重要
在实现乘车预订支持时,提供一个
GeoJSON
文件作为你可以提供乘车预订的地区信息,并在iTunes Connect上传该文件作为你的App的路由App覆盖文件(Routing App Coverage File)。当需要建议能够提供搭乘的App时,Maps会使用你的覆盖文件信息来决定是否应该建议使用你的App。如果你不提供覆盖文件,并且用户的设备上未安装你的应用,地图不会建议你的应用。有关如何创建和上传路由App覆盖文件的信息,请参阅iTunes Connect Properties。
CarPlay
拥有用于管理车辆的iOS应用的汽车制造商可以使用CarPlay意图,以便用户可以通过Siri管理车辆环境。表6-7列出了你可以实现的意图以及在Intents扩展中支持的类和协议。CarPlay意图不会自动要求用户的设备解锁。
表6-7CarPlay意图
用户意图 | 对象 |
---|---|
改变音频源 | Handler:INSetAudioSourceInCarIntentHandling protocol Intent:INSetAudioSourceInCarIntent Response:INSetAudioSourceInCarIntentResponse |
更改气候控制设置 | Handler:INSetClimateSettingsInCarIntentHandling protocol Intent:INSetClimateSettingsInCarIntent Response:INSetClimateSettingsInCarIntentResponse |
更改除霜设置 | Handler:INSetDefrosterSettingsInCarIntentHandling protocol Intent:INSetDefrosterSettingsInCarIntent Response:INSetDefrosterSettingsInCarIntentResponse |
将车辆设置保存到配置文件 | Handler:INSaveProfileInCarIntentHandling protocol Intent:INSaveProfileInCarIntent Response:INSaveProfileInCarIntentResponse |
从配置文件恢复车辆设置 | Handler:INSetProfileInCarIntentHandling protocol Intent:INSetProfileInCarIntent Response:INSetProfileInCarIntentResponse |
更改座椅温度 | Handler:INSetSeatSettingsInCarIntentHandling protocol Intent:INSetSeatSettingsInCarIntent Response:INSetSeatSettingsInCarIntentResponse |
更改广播电台 | Handler:INSetRadioStationIntentHandling protocol Intent:INSetRadioStationIntent Response:INSetRadioStationIntentResponse |
如果使用单个处理程序对象来支持所有的调用处理意图,则你的处理程序可以采用INCarPlayDomainHandling和INRadioDomainHandling协议,而不是单独采用每个协议。
重要
CarPlay意图仅供汽车制造商使用支持CarPlay的App。
餐厅预订
支持进行餐厅预订的应用可以使用意图来创建和管理用户预订。用户只能通过Maps应用进行预订,Maps应用会使用特定应用的Intents扩展程序来解决任何请求。表6-8列出了你可以实现的意图类型以及在Intents扩展中支持的类和协议。
表6-8餐厅预订意图
重要
此API要求你在App可以使用它之前使用Apple Maps。有关如何使用的信息,请访问MapsConnect-Extensions。
SiriKit译文系列
SiriKit官方文档 - Part1-1 SiriKit介绍
SiriKit官方文档 - Part1-2 创建一个Intents扩展
SiriKit官方文档 - Part1-3 解决和处理意图
SiriKit官方文档 - Part1-4 指定自定义词汇
SiriKit官方文档 - Part1-5 创建Intents UI扩展
SiriKit官方文档 - Part2-1 参考-意图域
SiriKit官方文档 - Part2-2 参考-App词汇文件格式