Когда мое приложение запускается впервые, следующий код работает должным образом и воспроизводится звук:
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
, или есть фрагмент кода, который мне не хватает