版本記錄
| 版本號 | 時間 |
|---|---|
| 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功能。

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ò)展。

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) 展開
NSExtension和NSExtensionAttributes鍵以顯示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提示時,選擇
Siri或Maps作為要運(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)注~~~
