使用iPod音乐播放器而无需在后台控制iPod

时间:2011-04-07 16:10:34

标签: background ipod mpmusicplayercontroller avplayer

我正在开发一款专注于在选定播放列表中随机播放歌曲的应用。当应用程序启动时,它会列出所有用户的播放列表,然后当选择一个时,它会将其加载到我的音乐播放器视图中并开始运行。我正在使用MPMusicPlayerController iPodMusicPlayer来处理这个问题,因为我在iOS开发方面很陌生,它可以处理背景,并且对我来说很容易。我希望音乐继续在后台播放,我喜欢我在应用程序中改变的内容也反映在iPod应用程序中。但是,我不希望用户能够更改iPod应用程序中的内容然后返回我的应用程序。由于我的应用程序都是关于洗牌,用户可以轻松进入iPod并禁用随机播放,然后回到我的应用程序,体验被破坏。我也不希望他们从iPod中更改播放列表。

任何人都可以帮我想办法吗?在iPod内播放/暂停/跳过/上一首/音量是没问题的(我希望这是可能的),但我不想改变歌曲队列是可能的。有没有办法在我的应用程序中添加处理程序,如果用户在我的应用程序处于后台时更改了某些内容(如果是,则停止音乐并将我的应用程序重置为初始屏幕)?我真的很感激任何建议。在我冒险使用AVPlayerQueue之类的东西之前,我希望这样的事情是可能的(作为旁注,你能用AVPlayerQueue播放DRM文件吗?)。

1 个答案:

答案 0 :(得分:0)

我要做的是在背景时设置一个bool:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
[prefs setBool:YES forKey:@"BACKGROUNDED"];

然后,在您应该实施的MPMusicPlayerControllerNowPlayingItemDidChangeNotification的处理程序中,以便您拥有该控件,请执行以下操作:

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
if ([prefs boolForKey:@"BACKGROUNDED"]) {
    [prefs setBool:NO forKey:@"BACKGROUNDED"];
    exit(0);
}

它可能过于突然,取决于它何时检查此代码(我不知道它何时在您的项目中执行),但这应该可以实现您的目标。 exit(0)是在不抛出异常的情况下终止您的应用的方法。这有用吗?

相关问题