我正在尝试在我的应用程序中使用 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 数组中获取下一首要播放的歌曲的歌曲编号。然后将此信息传递回播放歌曲的方法以获取 mediaArray。然而,现在,当歌曲播放结束时,didFinishSong 不会被调用,而是歌曲只是从头开始重复。
在检测歌曲结尾时我做错了什么吗?还有另一种方法吗?我也尝试使用计时器,但由于某种原因,每当应用程序进入后台时它就会停止计数,从而导致计数不准确。
提前感谢您提供的任何帮助。如果您需要更多信息,请不要犹豫,我会澄清更多。