愛奇藝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 反饋處理結果。
媒體播放意圖中,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 包含了需要的資訊。愛奇藝會為媒體播放意圖跳過啟動廣告,提高播放體驗。
愛奇藝媒體搜尋意圖接入流程
Resolve 步驟主要提取搜尋內容 Handle 步驟返回響應結果即可,響應碼 INSearchForMediaIntentResponseCodeContinueInApp
Siri Suggestions
定義 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 即可完成響應。
捐贈 Shortcut
NSUserActivity:Siri 會根據 userInfo 中的資訊尋找規律,使用 requiredUserInfoKeys 指定 userInfo 中哪些關鍵 key 在尋找規律時用來對比。persistentIdentifier 在刪除捐贈時使用。
刪除捐贈
如果已捐贈的 shortcut 中包括使用者刪除的資訊,或者 App 不再支援已捐贈的功能時,應該從 Siri 中刪除捐贈。
Handle Shortcuts
NSUserActivity 需要在 App 內處理;
Intents 支援後臺使用的 shortcut,需要建立 Intents App Extension。
愛奇藝 Siri Suggestions 實現
愛奇藝目前支援兩種建議,常用功能建議和媒體播放建議。Siri 建議出現的時機依賴捐贈形成的規律,而具體策略並不完全透明。開發者在日常生活中,有遇到其他 App 的 Siri 建議功能彈出略頻繁,可能會對使用者有所打擾。愛奇藝在捐贈播放行為時,會考慮播放的持續性,希望建議出現時,使用者確實有觀看時間和觀看需求,避免使用者在碎片時間偶然播放形成規律帶來不好的體驗。
常用功能建議使用 NSUserActivity 實現,點選後會開啟播放記錄頁面;
媒體播放建議使用系統內建的 INPlayMediaIntent 實現。App 捐贈當前播放行為,但使用者可能不會重複觀看已看過的內容。INUpcomingMediaManager 提供了更新建議內容的方式,可以向使用者建議未看過或未看完的內容。 支援在後臺執行的 shortcut 可以定製擴充套件程式的 UI,給使用者更好的體驗。愛奇藝也對 Intents UI app extension 做了調研,詳細實現方式請參考官方文件
總結
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