Я использую AVQueuePlayer для воспроизведения нескольких звуков подряд. Это отлично работает, даже в фоновом режиме.
Проблема возникает после того, как проигрыватель заканчивается, или после того, как я пытаюсь отменить игрока с чем-то вроде audioPlayer.pause()
или audioPlayer removeAllItems()
. В обоих случаях я не могу использовать плеер снова, он просто не начинает играть снова.
Логика для моего проигрывателя находится в дополнительном классе под названием «SoundManager.swift», который вызывается моим PlayerViewController. После того, как проигрыватель завершается или я приостанавливаю его, приложение возвращается к StartViewController. С этого момента я хочу снова вызвать PlayerViewController, чтобы снова запустить плеер с новыми предметами. Я понятия не имею, что пошло не так.
Это часть моего кода, где я начинаю и пытаюсь завершить проигрыватель.
// В "SoundManager.swift"
func play() {
session = AVAudioSession.sharedInstance()
do {
try session.setCategory(AVAudioSessionCategoryPlayback)
} catch { print(error) }
audioPlayer = AVQueuePlayer(items: playerItems)
audioPlayer.play()
}
func stop() {
audioPlayer.pause()
do {
try session.setActive(false)
} catch {print(error)}
audioPlayer.removeAllItems()
}
// В PlayerViewController
func startSession() {
audio.play()
}
@IBAction func cancle(_ sender: Any) {
audio.stop()
dismiss(animated: true, completion: nil)
}