0

我正在开发一个应用程序,它非常专注于在选定的播放列表中随机播放歌曲。当应用启动时,它列出了所有用户的播放列表,然后选择一个用户的播放列表,它将其加载到我的音乐播放器视图中并进行。我正在使用 MPMusicPlayerController iPodMusicPlayer 来处理这个问题,因为我在 iOS 开发方面还很新,它可以处理后台和一切对我来说都很好而且很容易的事情。我希望音乐继续在后台播放,我喜欢我在应用程序中所做的任何更改也反映在 iPod 应用程序中。但是,我不希望用户能够更改 iPod 应用程序中的内容,然后返回我的应用程序。由于我的应用程序都是关于随机播放的,用户可以轻松地进入 iPod 并禁用随机播放,然后再回到我的应用程序,体验就被破坏了。我也不

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

4

1 回答 1

0

我要做的是在后台设置一个布尔值:

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)是在不引发异常的情况下终止您的应用程序的方法。这有帮助吗?

于 2011-06-16T07:55:38.330 回答