Почему SCNAudioSource перестает работать после закрытия и повторного открытия приложения? - PullRequest
0 голосов
/ 31 марта 2020

Когда мое приложение запускается впервые, следующий код работает должным образом и воспроизводится звук:

let audioSource = SCNAudioSource(named: "sound.wav")
audioNode.runAction(SCNAction.playAudio(audioSource!, waitForCompletion: false))

audioNode является дочерним узлом SCNScene, отображаемым SCNView named scnView.

Однако, если я закрою приложение, подождите несколько секунд, а затем снова откройте его, когда исполняется тот же код, звук не воспроизводится.

Я заметил, что scnView.audioEngine.isRunning - это true, когда я впервые открываю приложение, но при перезапуске становится false.

Следующие сообщения печатаются в консоли после закрытия приложения:

[aurioc] AURemoteIO.cpp:1590:Start: AUIOClient_StartIO failed (561015905)
[avae]   AVAEInternal.h:109   [AVAudioEngineGraph.mm:1544:Start: (err = PerformCommand(*ioNode, kAUStartIO, NULL, 0)): error 561015905

И после повторного открытия приложения:

[avae] AVAEInternal.h:76    required condition is false: [AVAudioPlayerNode.mm:712:ScheduleBuffer: (_outputFormat.channelCount == buffer.format.channelCount)]

Я попытался перезапустить scnView.audioEngine, попытался сделать AVAudioSession.sharedInstance().setActive(true), когда приложение было вновь открыто и AVAudioSession прерывание закончено, но это не решило мою проблему , Я столкнулся с той же проблемой, когда пытался использовать SCNAudioPlayer вместо SCNAction.playAudio.

Это ошибка с SceneKit / AVFoundation, или есть фрагмент кода, который мне не хватает

...