iOS 10,其中一個亮點,SiriKit。讓App與Siri之間可以通過Extension來進行交互。
看一下相關術語:
Intent:意圖
Domain:領域
簡介
Siri通過用戶語音識別出Intent,App通過Intent做出對應的反應。7個領域共包含22個意圖,Siri現在只支持22個意圖:
通話服務:打電話、查通話記錄
消息短信:發信息、搜索信息
照片搜索:搜索照片、播放照片幻燈片
個人支付:收付款
打車服務:查看附近車輛、訂車
健身任務:任務開始、暫停、繼續、取消、結束
車載控制:切換音頻、空調、除霜等等
App若有相應的能力,可以通過Siri來進行一些交互
交互
通過開發App Extension進行與siri的交互,接收Siri分手確認後的Intent,根據Intent來做邏輯處理
並支持在siri上顯示自定義UI
兩個框架:
Intents框架,用於開發服務型擴展“Intents Extension”。在此擴展中,完成與Siri的交互,並處理相應的工作。
IntentsUI框架,用於開發UI型擴展“IntentsUI Extension”。在此擴展中,自定義Siri中內嵌的UI界面,展示處理結果。
Intents
Intent對象:對應INIntent類,22個意圖對應22個INIntent的子類
Handler對象:處理來自Siri的Intent,一個Handler對應多個Intent,一個Intent只由一個Handler處理。
IntentHandling協議:22個意圖對應22個協議,每種協議控制處理Intent的各個過程
Response對象:依然是各自Intent對應各自Response。代表Handler階段的處理結果
IntentHandling
處理來自Siri的Intent,三個階段
一:解析階段,此階段的方法均已resolve開頭
二:確認階段,此階段的方法以confirm開頭
三:處理階段,完成我們對應的服務
IntentsUI
還是使用UIKit,可以理解為在siri可以自定義UI,但是一定要注意,我們的自定義界面是無法接收和響應任何的touch信息,所以說,緊緊就是做展示作用。
Intents UI Extension 入口為實現INUIHostedViewControlling協議的VC,
INUIHostedViewControlling協議:
- (void)configureWithInteraction:(INInteraction *)interaction context:(INUIHostedViewContext)context completion:(void (^)(CGSize desiredSize))completion;
官網給出的生命周期很詳細:
資料
22個意圖對應的描述