AVAudioEngine звуковые глюки - PullRequest
0 голосов
/ 24 июня 2019

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

do {
    if sound > 1 {
        // 1st mode play with app sound
        if !FromStart {
            print("sound > 1", self.audioEngine.isRunning)
            self.audioEngine.stop()
            self.audioEngine.reset()
            try AVAudioSession.sharedInstance().setActive(false)
            try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
            try AVAudioSession.sharedInstance().setActive(true)

            // sleep(1)
            //try self.audioEngine.start()

            do {
                // 3
                try self.audioEngine.start()

            } catch let error {
                print("error sound > 1",error.localizedDescription)
            }

            if !FromStart { 
                self.PlayNewButtonSound() 
            }
        }

    } else if sound > 0 {
        //2nd mode play with other app sound
        if !FromStart {
            self.audioEngine.stop()
        }

        //print("sound > 0", self.audioEngine.isRunning)
        try AVAudioSession.sharedInstance().setActive(false)
        try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: [.mixWithOthers])
        try AVAudioSession.sharedInstance().setActive(true)

        //try self.audioEngine.start()
        do {
            // 3
            try self.audioEngine.start()

        } catch let error {
            print("error > 0",error.localizedDescription)
        }

        self.skHomesound?.run(SKAction.stop())
        if !FromStart {
            self.PlayNewButtonSound() 
        }
    }

} catch {
    print("Problem with enable sound error = \(error.localizedDescription)")
}

иногда отображается ошибка типа

AVAudioPlayerNode.mm:333: Start: required condition is false: 
    _engine->IsRunning() Terminating app due to uncaught exception 'com.apple.coreaudio.avfaudio', 
    reason: 'required condition is false: _engine->IsRunning()
...