Error Domain=kAFAssistantErrorDomain Code=7

司小文發表於2020-12-02

開場白:之前好久不更新了,下次更新要好久。

正題:最近幾年一直在負責公司的語音識別模組,這其中我們更改了很多次語音邏輯,但是不能更改的邏輯有以下幾點:

1. 建立語音引擎

2. 建立語音識別Task

3. 傳遞Buffer

4. 進行識別

 

而為什麼更改很多次語音識別邏輯,第一是不斷的學習中意識到了不足,第二是因為蘋果在語音識別方面做的也不是很完善經常進行更改和升級.

第一點不說了,第二點我來吐個槽,在iOS 13.1 -> iOS 13.3 這個過程中語音識別引擎進行了多次更改導致我們很多使用者使用的時候很迷茫 一會好一會壞的,最後我們更改了整體的邏輯,避免了BUG的出現。(改完以後在iOS 13.3 之後的版本蘋果修復了BUG,舊程式碼沒事了,Em....... 至少我那一陣是罵罵咧咧的)

言歸正傳:Error Domain=kAFAssistantErrorDomain Code=7, 這個BUG我們來說一下,這個錯誤會出現在iOS 14的系統當中,我是用14.2 裝置做的測試。

當我們頻繁呼叫 [SFSpeechRecognitionTask cancel]  來結束Task 時會出現這個錯誤,這會導致語音識別引擎不能使用,即使我清除了語音識別引擎物件依然沒有作用,只有重啟APP.

結束Task 之前我們用兩種方式來結束這個Task, 說下我的理解 :

//結束Task  語音內容 全都不要了,愛誰誰.

[SFSpeechRecognitionTask cancel];



//結束Task 現有語音內容儲存,之後的就不要了.

[SFSpeechRecognitionTask finish];

一般如果我們需要手動關閉Task 之前的內容肯定已經獲取到進行了處理,是不需要的 所以會呼叫[SFSpeechRecognitionTask cancel];

那麼問題來了,之前版本的iOS系統 還算講道理,不要就不要唄,我不管。 

更14後你會發現,多次不要的話,我就不讓你用了,著實有點小家子氣,會提示你 Error Domain=kAFAssistantErrorDomain Code=7。

這個時候只要你改成 [SFSpeechRecognitionTask finish]; 就可以正常使用。

不過會提示一個 Code = 209 的錯誤,這個錯誤不會影響你使用語音識別引擎,我認為只是一個錯誤操作的提示。( iOS 13的系統中 不提示 209 , 提示的是 code=2, 效果一樣)

我沒有其他系統的裝置了 所以沒有測試其他系統版本。

 

以上,

xxxxxxxx , 學以致用更感謝。

 

 

 

 

 

 

 

相關文章