0

每当我播放一首曲目然后移动到背景时,我都无法获得这些通知中的任何一个在我的应用程序中触发。有谁知道为什么或如何?MPMusicPlayerControllerPlaybackStateDidChangeNotification在后台中

 self.player = [MPMusicPlayerController applicationMusicPlayer]; 
     [self.player beginGeneratingPlaybackNotifications]; 


     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handlePlaybackStateChanged:) name:MPMusicPlayerControllerPlaybackStateDidChangeNotification object:self.player ]; 


     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleItemChanged:) name:MPMusicPlayerControllerNowPlayingItemDidChangeNotification object:self.player ]; 
+0

启用后台音频模式**(项目设置>功能>背景模式>音频和AirPlay)** –

回答

1

添加以下代码

UIBackgroundTaskIdentifier bgTask = 0; 
UIApplication *app = [UIApplication sharedApplication]; 
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{ 
    [app endBackgroundTask:bgTask]; 
}]; 
在AppDelegate中的 applicationDidEnterBackground方法

,那么你的方法将在后台工作也。

而且从功能使

音频的Airplay和画中画

。见截图

enter image description here

+0

嘿!这工作!谢谢。 – evenodd

+0

我现在遇到了一个新问题。当此通知在后台触发时,我运行一些代码以使用AVPlayer播放不同的mp3。由于某些原因,虽然歌曲不播放。在前景中它表现良好。我在后台播放AVPlayer也没有问题,但是在后台从MPMuiscPlayerController切换到AVPlayer的内容会破坏它。 – evenodd