如何在MusicKit中检测歌曲的结尾?

时间:2018-06-20 18:08:14

标签: swift audio-player mpmusicplayercontroller apple-music apple-musickit

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

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

在此先感谢您提供的任何帮助。如果您需要其他信息,请随时询问,我将进一步澄清。

0 个答案:

没有答案