6

我正在尝试在我的应用程序中使用 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 不会被调用,而是歌曲只是从头开始重复。

在检测歌曲结尾时我做错了什么吗?还有另一种方法吗?我也尝试使用计时器,但由于某种原因,每当应用程序进入后台时它就会停止计数,从而导致计数不准确。

提前感谢您提供的任何帮助。如果您需要更多信息,请不要犹豫,我会澄清更多。

4

0 回答 0