Siri Kit

概覽

  • 最新的WWDC2016大會上,蘋果提出iOS10并推出了十個新特性,homekit、messageapp等等,大部分是基于iPhone原生應用的更新。其中最大的亮點之一是Siri的接口開放,在iOS10中提供了SiriKit框架在用戶使用Siri的時候生成INExtension對象來告知我們的應用,我們可以通過SiriKit提供的API展示給用戶更多的內(nèi)容,提供更好的體驗。
  • Siri通過語言處理系統(tǒng)對用戶發(fā)出的對話請求進行解析之后生成一個用來描述對話內(nèi)容的Intent事件,然后通過SiriKit框架分發(fā)給集成框架的應用程序以此來獲取應用的內(nèi)容,比如通過文字匹配查找應用聊天記錄、聊天對象,蘋果demo演示的通過Siri向指定對象發(fā)送信息等功能,此外還支持為用戶使用蘋果地圖時提供應用內(nèi)置服務等功能。

SiriKit提供以下六類服務

  1. 語音和視頻通話 VoIP calling
  2. 發(fā)送消息 Messaging
  3. 收款或者付款 Payments
  4. 圖片搜索 Photo search
  5. 管理鍛煉 Workouts
  6. 行程預約 Ride booking
    下面來看一下一個典型的Siri進行交互的語句:


    詞匯邏輯

    其中有三類關鍵部分:Intent、App以及其他信息。Intent就是我要想要通過Siri去做的事的意圖,App是通過手機安裝的什么App來做,至于其他的Payee、Amount等信息則是通過App去完成Intent的必須信息。而整個Siri的交互過程可以參照下圖:


    執(zhí)行流程

    通過Siri來獲取用戶語言中的關鍵詞匯,這些詞匯在Extension中經(jīng)過一些邏輯處理,最終反饋到用戶界面,與用戶進行交互。

Siri通過Intents extension的擴展方式和我們的應用進行交互,其中Intents Extension扮演協(xié)同Siri共同響應用戶的角色,Intents UI Extension可以提供自定義的用戶響應界面,用以增強體驗。
當我們實現(xiàn)了Intents extension擴展并產(chǎn)生了一個Siri請求事件時,Intent(意圖)事件的處理過程分Resolve、Confirm和Handle三個步驟。

Intent處理的三個階段

生命周期
  • Resolve階段:
    幫助Siri明白用戶的含義
    影響Siri的行為
    提供resolution response
    在Siri獲取用戶的語音輸入之后,生成一個INIntent對象,將語音中的關鍵信息提取出來并且填充對應的屬性,該對象會傳遞給我們設置好的INExtension子類對象進行處理,根據(jù)子類遵循的不同protocol來選擇不同的解決方案。通過handler(for intent:)返回處理intent的對象,此對象會調用resolve打頭的實例方法來對Siri的響應進行一系列的信息處理,比如是否需要進一步的信息提示等。在resolve階段提供了以下方法:
    successWithResolvedPerson:成功找到匹配的人
    disambiguationWithPeopleToDisambiguate:還需要挑選
    confirmationRequiredWithPersonToConfirm:還需要確認下
    needMoreDetailsForPerson:還需要更具體的信息,需要Siri進行詢問
    unsupportedWithReason:無法使用指定值
    needsValue:需要某些必需值
    notRequired:應用并沒有要求某些值
  • Confirm階段。
    告訴Siri預期結果
    檢查必要的狀態(tài)
    提供Intent response
    Siri提供必要的確認提示
    Siri進行最后的處理階段,生成答復對象,并且向此intent對象確認處理結果。大概長這樣:


    效果圖

    當然,這個界面是經(jīng)過自定義的。

  • Handle階段:
    執(zhí)行請求操作
    提供有關結果足夠精確的信息
    如果結果耗時的話還可提供loading
    在Confirm方法執(zhí)行完成之后,然后顯示結果給用戶看。該階段完成后Intent的生命周期結束。

實現(xiàn)一個Siri Kit應用

  1. 升級到Xcode8,一臺升級到iOS10的測試設備
  2. Intents extension : resolve、confirm、handle流程
  3. Intents UI extension 提供界面自定義等內(nèi)容
  4. 新建一個空應用并新增一個target
  5. 新增Intents Extension,創(chuàng)建時會詢問是否激活該擴展且是否將Intents UI Extension一并創(chuàng)建,都選擇是。
  6. 了解Embedded frameworks


    extension

Embedded frameworks

Embedded frameworks是蘋果著重提出來的,主要用于以下幾個方面:

  1. 網(wǎng)絡服務
  2. 數(shù)據(jù)model
  3. Decision-making logic
  4. 用戶界面
    可以在應用主target以及extension分別引用。

在創(chuàng)建extension之后,我們查看extension的plist文件,默認的plist結構如圖所示:


plist

IntentsSupported表示的是應用支持的Intent事件,IntentsRestrictedWhileLocked表示的是鎖屏下支持的Intent事件。在demo中分別賦值:INSendMessageIntent。還要注意一下NSExtensionPrincipalClass,該項內(nèi)容表示的是extension響應的入口類。其為INExtension的子類,需要實現(xiàn)handler(for intent: INIntent)方法如下:


INExtension

用以根據(jù)不同的Intent分發(fā)各個自定義Handler進行處理。
另外還就是主項目plist 增加NSSiriUsageDescription 這個是請求Siri權限時提示的文案,同時使用Siri時,用戶必須說出App的名字,也就是Bundle display name,都需要進行設置。其中UCSendMessageIntentHandler需要實現(xiàn)INSendMessageIntentHandling中的方法用以與Siri進行交互,也就是Resolve、Confirm和Handler三階段的交互。

示例代碼如下:

  1. 獲取收件人信息,可以根據(jù)自身匹配的信息返回不同狀態(tài)與Siri進行進一步的交互。


    收件人
  2. 獲取信息內(nèi)容,也就是要給收件人發(fā)送的信息的具體內(nèi)容。


    信息內(nèi)容
  3. 收件人、信息內(nèi)容確定后,通過Siri向用戶進行信息確認。


    confirm
  4. 信息確認后,進行最終信息的發(fā)送并向用戶展示結果。


    handle

    具體展示到界面上的效果圖如下


    效果圖

    至此,一個完整的通過Siri進行發(fā)送信息的完整流程結束。簡要概括整個流程,可以參照蘋果Keynote中的圖示:
    protocol三階段

    當然,在上面圖例中,有開發(fā)者自定義的Siri反饋界面,這個界面的實現(xiàn)主要是通過Intents UI Extension來實現(xiàn)的。有興趣的話,可以自行研究,實現(xiàn)方式也很簡單。UI Extension的plist結構可以參照下圖,只需要設置一下IntentsSupported即可。


    plist

總結

雖然蘋果開放了SiriKit的入口,但是總體而言還是限制頗多,具體如何使用還是需要繼續(xù)深入挖掘。類似可以自定義應用詞匯、使用UI Extension過程中的內(nèi)存管理等等。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 引言 在6月14日凌晨的WWDC2016大會上,蘋果提出iOS10是一次里程碑并且推出了十個新特性,homekit...
    青花瓷的平方閱讀 3,614評論 0 2
  • 在這里放出原文鏈接地址 Part 3.1: 分析與操作 Intents Intents Extension 的的入...
    李國安閱讀 1,469評論 0 4
  • 介紹SiriKit SiriKit是讓你的內(nèi)容通過Siri展示的一個框架庫。當用戶向Siri請求特別類型的服務時,...
    孢子菌閱讀 4,487評論 1 6
  • 一、SiriKit介紹 Siri是一款蘋果 iOS 系統(tǒng)提供的智能語音助手軟件,它的全名是 Speech Inte...
    火星抄手閱讀 5,897評論 15 19
  • 在這大天世界里,每個人都有一份最真的心,可是往往很多時間人們都藏起他。
    紅酒佳坊閱讀 251評論 0 0

友情鏈接更多精彩內(nèi)容