Запуск ARKit 2.0 с ARSCNView. iOS12
Приложение использует многопоточность, поэтому эти функции выполняются в основном потоке (просто чтобы быть уверенным). Я также пытался без явного выполнения функций в основном потоке, но безрезультатно.
Я использую звуковой файл .aiff, но также пробовал .wav. Нет радости.
Я даже попытался удалить audioNode_alarm из иерархии узлов, и звук все еще играет. Я даже удаляю ARSCNView из иерархии представлений, и звук все равно воспроизводится. FFS
Из того, что я вижу, я делаю ТОЧНО, как и положено, чтобы остановить воспроизведение звука. Звук просто не остановится, что бы я ни пытался. Кто-нибудь может подумать почему?!
weak var audioNode_alarm: SCNNode!
weak var audioPlayer_alarm: SCNAudioPlayer?
func setupAudioNode() {
let audioNode_alarm = SCNNode()
addChildNode(audioNode_alarm)
self.audioNode_alarm = audioNode_alarm
}
func playAlarm() {
DispatchQueue.main.async { [unowned self] in
self.audioNode_alarm.removeAllAudioPlayers()
if let audioSource_alarm = SCNAudioSource(fileNamed: "PATH_TO_MY_ALARM_SOUND.aiff") {
audioSource_alarm.loops = true
audioSource_alarm.load()
audioSource_alarm.isPositional = true
let audioPlayer_alarm = SCNAudioPlayer(source: audioSource_alarm)
self.audioNode_alarm.addAudioPlayer(audioPlayer_alarm)
self.audioPlayer_alarm = audioPlayer_alarm
}
}
}
func stopAlarm() {
DispatchQueue.main.async { [unowned self] in
self.audioNode_alarm?.removeAudioPlayer(self.audioPlayer_alarm!)
self.audioNode_alarm?.removeAllAudioPlayers()
}
}