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協議:
1 2 3 |
- (void)configureWithInteraction:(INInteraction *)interaction context:(INUIHostedViewContext)context completion:(void (^)(CGSize desiredSize))completion; |
官網給出的生命週期很詳細:
資料
打賞支援我寫出更多好文章,謝謝!
打賞作者
打賞支援我寫出更多好文章,謝謝!
任選一種支付方式