【发布时间】:2021-06-01 08:40:19
【问题描述】:
每个谷歌都有类似的 OP 退出,但我没有通过关注他们来解决我的问题。看来我已经关门了,但仍然无法弄清楚哪里出了问题,在这里感谢任何提示。
我的 AudioPlayer 作为单例模式放在一个单独的文件中
class AudioPlayer {
// Singleton to keep audio continue to play when switching viewControllers
static let shared = AudioPlayer()
var player: AVAudioPlayer?
private init() {}
func play(url: URL) {
do {
player = try AVAudioPlayer(contentsOf: url)
guard let player = player else { return }
player.prepareToPlay()
player.play()
} catch {
print(error)
}
}
}
然后在PlayerViewController中作为播放场景。我输入了player.delegate = self。
并将委托方法放在下面。我调试发现audioPlayerDidFinishPlaying 没有被调用。
class PlayerViewController: UIViewController, AVAudioPlayerDelegate {
override func viewDidLoad() {
super.viewDidLoad()
AudioPlayer.shared.player?.delegate = self
}
func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool) {
if flag {
print("EAT")
goNextTrack()
} else {
fatalError("the audio doesn't finished playing successfully.")
}
}
}
【问题讨论】:
标签: ios swift avfoundation avaudioplayer