愛奇藝iOS深度實踐 | SiriKit詳解應用篇
SiriKit
2016年 WWDC大會上蘋果開放了 Siri 的 API,開發者們可以利用 SiriKit 將自己的服務提供給使用者。SiriKit 負責處理使用者透過 Siri 對 App 服務的請求,並定義了使用者可以發出的請求型別,稱為意圖,使用域將相關的意圖進行分組。例如,訊息域具有傳送訊息,搜尋訊息以及將訊息標記為已讀或未讀的意圖。App 透過建立能與 Siri 通訊的擴充套件來使用 SiriKit,使用時 App 無需處於執行狀態。此擴充套件會對它能夠處理的特定域和意圖進行註冊。比如,一個資訊 App 可以註冊支援資訊的域,以及傳送資訊的意圖,SiriKit 包含 Intents 和 IntentsUI 框架,支援兩種型別的擴充套件:
SiriKit Media Intents
在 WWDC2019 上蘋果介紹了新的媒體播放服務,並且給開發者開放更多的能力。愛奇藝也同步開始技術調研,並在 iOS 13 正式版釋出前上線了對媒體播放意圖的支援。Media domain 負責處理使用者對媒體類服務的請求,支援媒體播放、新增媒體、搜尋媒體、媒體偏好四種意圖。藉助 Media domain,使用者無需啟動 App 即可實現對音訊媒體的播放和控制,這對音訊類 App 非常有意義。對於影片,Siri 會幫使用者啟動 App 並在前臺播放,同樣簡化了播放流程,提高使用體驗。
愛奇藝媒體播放意圖接入流程
在後臺播放,App 收到的系統回撥是 application:handleIntent:completionHandler: 在前臺播放,App 收到的系統回撥是 application:continueUserActivity:restorationHandler 需要在 Info.plist 中宣告 App 支援的活動型別.
Resolve: 驗證意圖的引數,確保具有滿足使用者請求所需的資訊。SiriKit 會呼叫每個引數的解析方法,根據返回的解析結果決定如何繼續。 Confirm: 對意圖引數執行最終驗證,並驗證 App 的服務已準備就緒,可以實現意圖。 Handle: 實現意圖,並向 SiriKit 反饋處理結果。
![愛奇藝iOS深度實踐 | SiriKit詳解應用篇](https://i.iter01.com/images/3ac5e8a31e2d55560d4b2fa01297f9a80919d8d916a34571274f31836ce02cef.jpg)
媒體播放意圖中,Resolve 步驟負責解析意圖的 INMediaSearch 物件,並返回具體可播放的媒體物件。 mediaSearch 包含的媒體資訊可能不會精確匹配實際的媒體名稱,因為使用者的表述和 Siri 語音識別的結果可能是不準確的。搜尋服務的模糊查詢會返回準確的媒體資訊,Siri 也會正確的提示實際播放的內容。 mediaSearch 可能為空,使用者沒有指定具體播放的內容。不建議主動詢問要播放什麼,使用者可能會因此而退出使用。開發者需要做出決定,比如播放推薦或熱門的內容,或者按使用者的播放記錄繼續播放。 除了媒體名稱,mediaSearch 還包括媒體型別、藝術家、排序等資訊,這些資訊應結合使用,縮小搜尋範圍,播放更匹配的內容。 愛奇藝對使用者的意圖做了進一步的識別,比如播放“破冰行動大結局”,“延禧攻略第十集”,“最新的奇葩說”等,提供更好的使用者體驗。
音訊媒體應該在後臺播放,響應碼為: INPlayMediaIntentResponseCodeHandleInApp 影片媒體需要在前臺播放,響應碼為: INPlayMediaIntentResponseCodeContinueInApp
後臺播放,App 收到的系統回撥是 application:handleIntent:completionHandler:,intent 引數包含了需要的資訊; 前臺播放,App 收到的系統回撥是 application:continueUserActivity:restorationHandler:,userActivity.interaction.intent 包含了需要的資訊。 愛奇藝會為媒體播放意圖跳過啟動廣告,提高播放體驗。
後臺播放,App 收到的系統回撥是 application:handleIntent:completionHandler:,intent 引數包含了需要的資訊; 前臺播放,App 收到的系統回撥是 application:continueUserActivity:restorationHandler:,userActivity.interaction.intent 包含了需要的資訊。愛奇藝會為媒體播放意圖跳過啟動廣告,提高播放體驗。
愛奇藝媒體搜尋意圖接入流程
![愛奇藝iOS深度實踐 | SiriKit詳解應用篇](https://i.iter01.com/images/2c2e822ca4bee6566dc7b473ac16e0099b1cd881d24292dbf9fbd93eda09e956.jpg)
Resolve 步驟主要提取搜尋內容 Handle 步驟返回響應結果即可,響應碼 INSearchForMediaIntentResponseCodeContinueInApp
![愛奇藝iOS深度實踐 | SiriKit詳解應用篇](https://i.iter01.com/images/14b1317a9b5e12f5ad64c0c12c526be99ebb6734a078a995801526f641199fb7.jpg)
Siri Suggestions
![愛奇藝iOS深度實踐 | SiriKit詳解應用篇](https://i.iter01.com/images/1a66b922ec7e696d89e20bc761260ef7209df0a1c549f16577035beb69865819.jpg)
定義 Shortcu
NSUserActivity 是一種表示 App 狀態的輕量級方式,如果只是要構建開啟 App 內某個功能的簡單 shortcut,建議使用這種方式。定義 Shortcut,只需在 App Target Info.plist NSUserActivityTypes 中新增型別即可,例如,com.myapp.name.my-activity-type; Intents 可以提供最優的 Shortcuts 體驗。Siri 會根據意圖引數提供更加智慧的預測,並且支援自定義語音回覆和定製化的 UI,結合 Intents App Extension,無需啟動 App 即可完成響應。
![愛奇藝iOS深度實踐 | SiriKit詳解應用篇](https://i.iter01.com/images/2d5b6aaa0fef5ca0cac6fe1e7db152b1e31a2f000fe04e837ba585ec7c21a181.jpg)
捐贈 Shortcut
NSUserActivity:Siri 會根據 userInfo 中的資訊尋找規律,使用 requiredUserInfoKeys 指定 userInfo 中哪些關鍵 key 在尋找規律時用來對比。persistentIdentifier 在刪除捐贈時使用。
![愛奇藝iOS深度實踐 | SiriKit詳解應用篇](https://i.iter01.com/images/538328a0210cfdb4c90ca8dff29e0abe1d6563999ce94d956e9bdd8a38186c2b.jpg)
![愛奇藝iOS深度實踐 | SiriKit詳解應用篇](https://i.iter01.com/images/eba3630720a5304f3341d556c98fc5e48603493e35729e3d5412453b306d029e.jpg)
![愛奇藝iOS深度實踐 | SiriKit詳解應用篇](https://i.iter01.com/images/5c28a175ac6ff7043eadfd29898eda9538860a3a67c85429449c137c73b02a85.jpg)
![愛奇藝iOS深度實踐 | SiriKit詳解應用篇](https://i.iter01.com/images/d07ccd5755972b29a04be50665844af4e9d4b085dd48b43e5737ef6e43153c5e.jpg)
刪除捐贈
如果已捐贈的 shortcut 中包括使用者刪除的資訊,或者 App 不再支援已捐贈的功能時,應該從 Siri 中刪除捐贈。
![愛奇藝iOS深度實踐 | SiriKit詳解應用篇](https://i.iter01.com/images/6eb162f8ca1e48e129890d2115a33d1c582aa77d5841da245f29ae43c81d222b.jpg)
![愛奇藝iOS深度實踐 | SiriKit詳解應用篇](https://i.iter01.com/images/56eb930de2339b40273a3e73b391b6023b031ea734f713435662b8132b2b6fc7.jpg)
Handle Shortcuts
NSUserActivity 需要在 App 內處理;
![愛奇藝iOS深度實踐 | SiriKit詳解應用篇](https://i.iter01.com/images/f01cf30bdc095f7e062476c0c37eed92d726c4fcf2bee1b4f1a5ba79bab404bb.jpg)
Intents 支援後臺使用的 shortcut,需要建立 Intents App Extension。
愛奇藝 Siri Suggestions 實現
愛奇藝目前支援兩種建議,常用功能建議和媒體播放建議。Siri 建議出現的時機依賴捐贈形成的規律,而具體策略並不完全透明。開發者在日常生活中,有遇到其他 App 的 Siri 建議功能彈出略頻繁,可能會對使用者有所打擾。愛奇藝在捐贈播放行為時,會考慮播放的持續性,希望建議出現時,使用者確實有觀看時間和觀看需求,避免使用者在碎片時間偶然播放形成規律帶來不好的體驗。
常用功能建議使用 NSUserActivity 實現,點選後會開啟播放記錄頁面;
媒體播放建議使用系統內建的 INPlayMediaIntent 實現。App 捐贈當前播放行為,但使用者可能不會重複觀看已看過的內容。INUpcomingMediaManager 提供了更新建議內容的方式,可以向使用者建議未看過或未看完的內容。 支援在後臺執行的 shortcut 可以定製擴充套件程式的 UI,給使用者更好的體驗。愛奇藝也對 Intents UI app extension 做了調研,詳細實現方式請參考官方文件
![愛奇藝iOS深度實踐 | SiriKit詳解應用篇](https://i.iter01.com/images/55bb92b1690c9cc7a15488f0d41f8491f98dc0d8cfa3a6a1869d6ea1eaabd5a6.jpg)
![愛奇藝iOS深度實踐 | SiriKit詳解應用篇](https://i.iter01.com/images/b717a6211f7785a46ace5e52f8b978fc2e482ef1f7ab9b1e16828e23783f45d3.jpg)
總結
SiriKit 的能力還需要不斷完善,仍有一些可最佳化的地方,比如當使用者播放意圖但不指定具體 App 時,希望可以展示支援播放的 App 列表給使用者選擇。隨著 Apple 開放更多 Siri 相關的能力,使用者可以在新的場景以新的方式使用 App 的功能。開發者可以參考以下資料,為 App 支援 Siri 相關功能。
· SiriKit
· Introduction to Siri Shortcuts
· Introducing Parameters for Shortcuts
· Introducing SiriKit Media Intents
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69945252/viewspace-2704748/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 愛奇藝內容中臺之Serverless應用與實踐Server
- 詳解愛奇藝ZoomAI影片增強技術的應用OOMAI
- 詳解愛奇藝ZoomAI視訊增強技術的應用OOMAI
- 愛奇藝網路協程編寫高併發應用實踐
- Android篇 | 愛奇藝App啟動最佳化實踐分享AndroidAPP
- 愛奇藝深度學習雲平臺的實踐及優化深度學習優化
- 愛奇藝深度學習雲平臺的實踐及最佳化深度學習
- 愛奇藝混合雲內網DNS實踐內網DNS
- 愛奇藝元件化設計在會員業務的應用和實踐元件化
- 學術派 | 愛奇藝深度語義表示學習的探索與實踐
- 愛奇藝個性化推薦排序實踐排序
- 愛奇藝的雲上資料治理實踐
- 拯救老電影——詳解愛奇藝ZoomAI視訊增強技術的應用OOMAI
- 愛奇藝逗芽表情搜尋分析與實踐
- 愛奇藝微服務監控的探索與實踐微服務
- 愛奇藝短視訊智慧標籤生成實踐
- iOS多執行緒詳解:實踐篇iOS執行緒
- 愛奇藝在服務網格方向的落地實踐
- iOS版愛奇藝取消自動續費教程 愛奇藝自動續費怎麼取消?iOS
- 深度學習之雙DNN排序模型:線上知識蒸餾在愛奇藝推薦的實踐深度學習DNN排序模型
- 愛奇藝在 Dubbo 生態下的微服務架構實踐微服務架構
- 愛奇藝大資料實時分析平臺的建設與實踐大資料
- AI在愛奇藝商業廣告中的應用和探索AI
- 愛奇藝財報圖解:2018年Q1愛奇藝營收7.776億美元 同比增長57%圖解營收
- 車澈的愛奇藝往事
- 詳解JavaScript陣列特性與實踐應用JavaScript陣列
- 個性化海報在愛奇藝影片推薦場景中的實踐
- 免費報名 | 愛奇藝ZoomAI視訊增強技術的應用OOMAI
- 愛奇藝財報:2023年愛奇藝總營收319億元 同比增長10%營收
- 大規模機器學習在愛奇藝視訊分析理解中的實踐機器學習
- i 技術會筆記 | Druid在愛奇藝的實踐和技術演進筆記UI
- 深度學習的應用與實踐深度學習
- 乾貨 | 愛奇藝全鏈路自動化監控平臺的探索與實踐
- 愛奇藝財報:2023年Q1愛奇藝營收83億元 同比增長15%營收
- 愛奇藝統一實時計算平臺建設
- 愛奇藝RND框架技術探索——架構與實現框架架構
- 【LiteApp系列】何為愛奇藝小程式?APP
- 愛奇藝 Android PLT hook 技術分享AndroidHook