我试图在我的应用程序中使用Apple的Music Kit收听音乐。我的问题是,播放的第一首歌曲会不断重复。通过使用以下代码,第一首歌曲可以正确播放:
let mediaArray = [songsApple?[songNumber!]]
let playableColledction = MPMediaItemCollection.init(items: mediaArray as! [MPMediaItem])
applicationMusicPlayer.setQueue(with: playableCollection)
applicationMusicPlayer.play()
self.activateAudioSession
activateAudioSession方法为:
do {
try audioSession.setCategory(AVAudioSessionCategoryPlayback)
try audioSession.setActive(true)
}
catch let error {
print(error.localizedDescription)
}
要检测歌曲的结尾,请使用Apple Music文档中的以下观察者:
applicationMusicPlayer.beginGeneratingPlaybackNotications()
NotificationCenter.default.addObserver(self, #selector(didFinishSong), name: Notification.Name.MPMusicPlayerControllerNowPlayingItemDidChange, object: nil)
didFinishSong方法用于从songsApple数组中获取要播放的下一首歌曲的songNumber。然后,此信息将传递回播放歌曲的方法中,以获取mediaArray。但是,现在,当歌曲播放结束时,didFinishSong不会被调用,而是从头开始重复播放。
在检测歌曲结尾时我做错了什么吗?还有另一种方法吗?我也尝试使用计时器,但是由于某种原因,只要应用程序进入后台,计数都会不准确,它将停止计数。
在此先感谢您提供的任何帮助。如果您需要其他信息,请随时询问,我将进一步澄清。