SiriKit官方文档 - Part2-1 参考-意图域

最近在看SiriKit的官方文档,自啃 + Google翻译,如有错误或语义不当还望指出。

官方文档原文 - Intents Domains

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

如果使用单个处理程序对象来支持所有的调用处理意图,则你的处理程序可以采用INCarPlayDomainHandlingINRadioDomainHandling协议,而不是单独采用每个协议。

重要

CarPlay意图仅供汽车制造商使用支持CarPlay的App。

餐厅预订

支持进行餐厅预订的应用可以使用意图来创建和管理用户预订。用户只能通过Maps应用进行预订,Maps应用会使用特定应用的Intents扩展程序来解决任何请求。表6-8列出了你可以实现的意图类型以及在Intents扩展中支持的类和协议。

表6-8餐厅预订意图

用户意图 对象
获取用户当前的餐厅预订 (Maps only) Handler:INGetUserCurrentRestaurantReservationBookingsIntentHandling protocol
Intent:INGetUserCurrentRestaurantReservationBookingsIntent
Response:INGetUserCurrentRestaurantReservationBookingsIntentResponse
获取有关要与预订关联的用户的信息 (Maps only) Handler:INGetRestaurantGuestIntentHandling protocol
Intent:INGetRestaurantGuestIntent
Response:INGetRestaurantGuestIntentResponse
需要预定时间时使用的默认值 (Maps only) Handler:INGetAvailableRestaurantReservationBookingDefaultsIntentHandling protocol
Intent:INGetAvailableRestaurantReservationBookingDefaultsIntent
Response:INGetAvailableRestaurantReservationBookingDefaultsIntentResponse
获取当前可用的预订时间 (Maps only) Handler:INGetAvailableRestaurantReservationBookingsIntentHandling protocol
Intent:INGetAvailableRestaurantReservationBookingsIntent
Response:INGetAvailableRestaurantReservationBookingsIntentResponse
用户进行预定 (Maps only) Handler:INBookRestaurantReservationIntentHandling protocol
Intent:INBookRestaurantReservationIntent
Response:INBookRestaurantReservationIntentResponse

重要

此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词汇文件格式