我有点奇怪的问题。我有一个使用[MPMusicPlayerController iPodMusicPlayer]
的音乐应用。一切都很好,通知会因轨道更改和播放状态的变化而触发。
我有一个用户需要查看一首歌的屏幕,我不希望他继续查看队列中的下一首歌。由于没有代表方法可以改变音轨何时改变(仅DID改变),为了防止音乐播放器继续播放到下一曲目,我使用新的[MPMusicPlayerController applicationMusicPlayer]
,给它播放iPodMusicPlayer当前播放的歌曲,一切都很好。没有新的曲目可以继续,而且我没有触及原来的iPodMusicPlayer
队列,所以理论上,当我关闭此屏幕并再次使用iPodMusicPlayer
时,一切都应该完全没问题。
然而,当用户在此屏幕上完成并关闭它时,iPodMusicPlayer
现在突然中断,通知未被调用,当我将应用程序置于后台时,音乐停止播放,让我相信iPodMusicPlayer
现在实际上是applicationMusicPlayer
。
好吧我的问题基本上是:我需要一种方法来阻止音乐播放器继续到队列中的下一个音轨。如上所述,切换到具有一个轨道的applicationMusicPlayer似乎打破了东西。什么是最好的解决方案?
编辑:因为这可能有点难以理解,我创建了一个小项目来展示问题:https://github.com/kevinrenskers/MPMusicPlayerControllerTest。在播放音乐时打开应用程序,看到播放按钮的行为正确。现在打开弹出窗口,再次关闭它,播放按钮坏了。
答案 0 :(得分:1)
我找到了解决问题的方法:将repeatMode
设置为MPMusicRepeatModeOne
,然后抓住MPMusicPlayerControllerNowPlayingItemDidChangeNotification
通知。您可以停止播放,但永远不会继续播放下一首曲目。完成第二个屏幕后,我将repeatMode
重置为原始值。