MPMusicPlayerController:结合iPodMusicPlayer和applicationMusicPlayer以防止继续下一首曲目

时间:2012-06-11 16:41:36

标签: ios mpmusicplayercontroller

我有点奇怪的问题。我有一个使用[MPMusicPlayerController iPodMusicPlayer]的音乐应用。一切都很好,通知会因轨道更改和播放状态的变化而触发。

我有一个用户需要查看一首歌的屏幕,我不希望他继续查看队列中的下一首歌。由于没有代表方法可以改变音轨何时改变(仅DID改变),为了防止音乐播放器继续播放到下一曲目,我使用新的[MPMusicPlayerController applicationMusicPlayer],给它播放iPodMusicPlayer当前播放的歌曲,一切都很好。没有新的曲目可以继续,而且我没有触及原来的iPodMusicPlayer队列,所以理论上,当我关闭此屏幕并再次使用iPodMusicPlayer时,一切都应该完全没问题。

然而,当用户在此屏幕上完成并关闭它时,iPodMusicPlayer现在突然中断,通知未被调用,当我将应用程序置于后台时,音乐停止播放,让我相信iPodMusicPlayer现在实际上是applicationMusicPlayer

好吧我的问题基本上是:我需要一种方法来阻止音乐播放器继续到队列中的下一个音轨。如上所述,切换到具有一个轨道的applicationMusicPlayer似乎打破了东西。什么是最好的解决方案?

编辑:因为这可能有点难以理解,我创建了一个小项目来展示问题:https://github.com/kevinrenskers/MPMusicPlayerControllerTest。在播放音乐时打开应用程序,看到播放按钮的行为正确。现在打开弹出窗口,再次关闭它,播放按钮坏了。

1 个答案:

答案 0 :(得分:1)

我找到了解决问题的方法:将repeatMode设置为MPMusicRepeatModeOne,然后抓住MPMusicPlayerControllerNowPlayingItemDidChangeNotification通知。您可以停止播放,但永远不会继续播放下一首曲目。完成第二个屏幕后,我将repeatMode重置为原始值。