SiriKit框架詳細(xì)解析(三)—— 創(chuàng)建Intents App擴(kuò)展(一)

版本記錄

版本號 時間
V1.0 2018.09.11

前言

大家都知道隨著人工智能的發(fā)展,會掀起來另外一個工業(yè)革命,而語音識別就是人工智能的初始階段,但是每個公司做的都不一樣,涉及到一系列的語音的采集和算法實(shí)現(xiàn),蘋果的Siri就是業(yè)界語音識別的代表性的產(chǎn)品。接下來的幾篇我們就詳細(xì)解析一下SiriKit這個框架。感興趣的可以看下面幾篇文章。
1. SiriKit框架詳細(xì)解析(一)—— 基本概覽(一)
2. SiriKit框架詳細(xì)解析(二)—— 請求授權(quán)使用SiriKit和INPreferences類(一)

Overview

與SiriKit的交互通過您的Intents應(yīng)用擴(kuò)展程序進(jìn)行,您可以在iOS或watchOS應(yīng)用程序包中進(jìn)行。 Intents app擴(kuò)展程序處理與SiriKit的大多數(shù)交互,但您的應(yīng)用程序需要了解這些交互,并且在某些情況下可能會在實(shí)現(xiàn)這些交互時發(fā)揮積極作用。

配置Xcode項(xiàng)目需要幾個步驟。 除了向項(xiàng)目添加Intents應(yīng)用擴(kuò)展目標(biāo)外,您還必須對應(yīng)用進(jìn)行一些小的更改。


Enable the Siri Capability - 打開Siri

啟用Siri功能可為您的應(yīng)用添加一組權(quán)利。 App Store要求任何包含Intents擴(kuò)展程序的iOS應(yīng)用程序或watchOS應(yīng)用程序都存在這些權(quán)利。

在Xcode中打開您的應(yīng)用程序項(xiàng)目。

  • 1) 在項(xiàng)目設(shè)置中,選擇適當(dāng)?shù)哪繕?biāo)。 (對于iOS,請選擇您的iOS應(yīng)用目標(biāo)。對于watchOS,請選擇您的WatchKit擴(kuò)展目標(biāo)。)
  • 2) 選擇Capabilities選項(xiàng)卡。
  • 3) 啟用Siri功能。
Figure 1 Enabling the Siri capability in your project

Add an Intents App Extension to Your Project - 為您的項(xiàng)目添加Intents App擴(kuò)展

添加Intents應(yīng)用程序擴(kuò)展目標(biāo)提供了構(gòu)建Intents擴(kuò)展所需的初始文件,并配置您的Xcode項(xiàng)目以構(gòu)建該擴(kuò)展并將其包含在您的應(yīng)用程序包中。

  • 1) 在Xcode中打開現(xiàn)有的應(yīng)用程序項(xiàng)目。
  • 2) 選擇File > New > Target
  • 3) 從iOS或watchOS平臺的Application Extension組中選擇Intents擴(kuò)展。
  • 4) 點(diǎn)擊下一步。
  • 5) 指定擴(kuò)展名稱并配置語言和其他選項(xiàng)。
  • 6) 對于iOS應(yīng)用程序,如果您計劃自定義Siri界面的某些部分,請啟用包含UI Extension選項(xiàng)。
  • 7) 單擊完成。

注意:您可以向應(yīng)用添加多個Intents擴(kuò)展,但每個擴(kuò)展必須支持不同的intents。 僅當(dāng)這樣做可以提供性能優(yōu)勢或減少每個擴(kuò)展的內(nèi)存占用時,才創(chuàng)建多個擴(kuò)展。

Figure 2 Adding an Intents app extension to your Xcode project

Specify the Intents that Your Extension Supports - 指定擴(kuò)展支持的Intents

Intents擴(kuò)展目標(biāo)添加到項(xiàng)目后,配置Xcode提供的默認(rèn)Info.plist文件以指定您支持的意圖。 SiriKit使用擴(kuò)展程序的Info.plist文件中的信息來確定要路由到您的擴(kuò)展程序的意圖。

  • 1) 在Xcode中,選擇Intents app擴(kuò)展的Info.plist文件。
  • 2) 展開NSExtensionNSExtensionAttributes鍵以顯示IntentsSupported鍵(iOS和watchOS)和IntentsRestrictedWhileLocked鍵(僅限iOS)。
  • 3) 在IntentsSupported鍵中,為擴(kuò)展程序處理的每個intent添加一個String項(xiàng)。將每個項(xiàng)的值設(shè)置為intent的類名。
  • 4) 在IntentsRestrictedWhileLocked項(xiàng)中,為要求解鎖設(shè)備的每個intent添加一個String項(xiàng)。將每個項(xiàng)的值設(shè)置為intent的類名。

在iOS中包含IntentsRestrictedWhileLocked鍵是可選的。您可以使用它來擴(kuò)充需要解鎖設(shè)備的意圖列表。某些意圖(例如涉及金融交易的意圖)總是要求解鎖用戶的設(shè)備。對于這些意圖,Siri會自動要求用戶解鎖設(shè)備,無論您是否將其包含在IntentsRestrictedWhileLocked鍵下。在watchOS中,所有意圖都要求解鎖設(shè)備。

重要:您在watchOS應(yīng)用中支持的意圖必須是您在iOS應(yīng)用中支持的意圖的子集。 換句話說,iOS應(yīng)用中的Intents擴(kuò)展必須能夠處理watchOS應(yīng)用中Intents擴(kuò)展所處理的所有相同意圖。 在watchOS應(yīng)用程序中支持意圖但在iOS應(yīng)用程序中沒有支持意圖這是一種程序的錯誤。

當(dāng)用戶的話語模糊以至于它解析為多個意圖時,SiriKit會使用IntentsSupported鍵中的意圖順序來確定發(fā)送給您的應(yīng)用的意圖。 通過將最相關(guān)的那些放在數(shù)組前面,先組織您的意圖列表。 當(dāng)Intents擴(kuò)展支持具有相似語義的多個域時,優(yōu)先考慮意圖尤其重要。 例如,支持電話和消息傳遞意圖的應(yīng)用程序可能會選擇通過發(fā)起呼叫來優(yōu)先發(fā)送消息。

某些意圖可能需要為您的Xcode項(xiàng)目或您的應(yīng)用程序執(zhí)行其他配置步驟。 例如,在實(shí)施乘車預(yù)訂應(yīng)用程序時,Maps希望您提供描述服務(wù)的覆蓋范圍的GeoJSON文件。 有關(guān)任何特殊要求的信息,請參閱參考文檔。


測試你的Intents App擴(kuò)展

Xcode支持直接從Xcode項(xiàng)目啟動Intents app擴(kuò)展,并在模擬器或設(shè)備上運(yùn)行時對其進(jìn)行調(diào)試。 要運(yùn)行和調(diào)試Intents擴(kuò)展:

  • 1) 選擇Intents擴(kuò)展的構(gòu)建方案。 (在創(chuàng)建Intents擴(kuò)展目標(biāo)時,Xcode會自動為您創(chuàng)建構(gòu)建方案。)
  • 2) 選擇運(yùn)行代碼的target(模擬器或設(shè)備)。
  • 3) 選擇“產(chǎn)品”>“運(yùn)行”以開始調(diào)試會話。
  • 4) 當(dāng)Xcode提示時,選擇SiriMaps作為要運(yùn)行的主應(yīng)用程序。 Xcode構(gòu)建您的應(yīng)用和擴(kuò)展程序,將它們安裝在設(shè)備上,然后啟動您選擇的應(yīng)用程序。

首次安裝擴(kuò)展程序時,Siri可能無法立即識別您的應(yīng)用程序擴(kuò)展程序,您可能需要等待幾分鐘才能發(fā)出任何相關(guān)命令。 同樣,在更新擴(kuò)展程序的Info.plist文件時,您可能需要等待幾分鐘,然后Siri才能識別出任何更改。

后記

本篇主要講述了創(chuàng)建Intents App擴(kuò)展,感興趣的給個贊或者關(guān)注~~~

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

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

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