15

AVAudioEngineに接続して(再)開始する次のコードがありますAVAudioEngineConfigurationChangeNotification

   do {
       try self.engine.start()
   } catch {
       DDLogError("could not start sound engine")
       self.soundEnabled = false
       return
   }

self.engine は次のように定義されます

private let engine = AVAudioEngine()

ただし、Crashlytics を介してクラッシュ レポートを頻繁に受け取ります。

致命的な例外: com.apple.coreaudio.avfaudio エラー 561015905

を含む行にtry self.engine.start().

561015905 はAVAudioSessionErrorCodeCannotStartPlaying、私が理解していることから、これは例外ではなくエラーコードである必要があり、上記のコードのNSError空白でキャッチする必要があります。catchそれでも、その時点でアプリがクラッシュするようです。私は何が欠けていますか?

このエラーが発生する可能性があるバックグラウンドでアプリが起動する状況があることは知っていますdo/catch

4

2 に答える 2

4

通知を処理するときに同じエラーが発生しましたAVAudioSessionInterruption
私の場合、AVAudioEngine中断が終了した後に起動しようとするとエラーが発生していました。
しばらく詳細なテストとデバッグを行った後、debugger breakpoint以前audioEngine.prepare()またはaudioEngine.start(). だから私は前に
追加し、私のアプリはクラッシュしなくなりました! sleep(1)audioEngine.start()

私はそれが非常にエレガントな解決策ではないことを知っていますが、これが他の誰かに役立つことを願っています!

于 2016-10-08T20:06:26.770 に答える