iOS在应用程序处于后台时接收媒体播放器通知

iOS在应用程序处于后台时接收媒体播放器通知,ios,xcode,background-process,nsnotifications,mpmusicplayercontroller,Ios,Xcode,Background Process,Nsnotifications,Mpmusicplayercontroller,可能是一个简单的问题-一旦移动到后台,iOS应用程序能否继续接收媒体播放器通知[NSNotifications](即MPMusicLayerControllerNowPlayingItemDidChangeNotification) 我特别使用iPodMusicPlayer在我的主要应用程序功能上播放歌曲,我想在应用程序进入后台模式后,在此通知下播放实现代码 不要求代码;只有一点是正确的:背景媒体通知;) 我做了一些检查,因为我需要同样的 不幸的是,我看到你的应用程序在后台时没有收到通知 但是,

可能是一个简单的问题-一旦移动到后台,iOS应用程序能否继续接收媒体播放器通知[NSNotifications](即MPMusicLayerControllerNowPlayingItemDidChangeNotification)

我特别使用iPodMusicPlayer在我的主要应用程序功能上播放歌曲,我想在应用程序进入后台模式后,在此通知下播放实现代码


不要求代码;只有一点是正确的:背景媒体通知;)

我做了一些检查,因为我需要同样的

不幸的是,我看到你的应用程序在后台时没有收到通知

但是,我意识到,一旦恢复,它确实会收到整个通知队列。 问题是,所有的通知都会同时收到,而您不会知道它们被触发的时间和日期

当然,由于您一次收到所有项目,即使您尝试在MPMusicLayerControllerNowPlayingItemDidChange通知后保存nowPlayingItem,您也只会在应用程序再次激活时看到当前项目,仅此而已。 不幸的是,我认为我们不能做更多的事情,因为苹果医生也说

通知没有userInfo字典


这意味着您无法从通知中获得任何信息。

我实际上已经找到了解决方案(或者更准确地说,找到了解决方法):我只是在appdelegate类中使用了didenterbackground方法来请求允许的最长额外时间(我认为是500秒)。这允许通知在500秒的窗口内发出(大多数歌曲都是如此!):)好的,但是在这段额外的时间里你会做什么样的手术呢?你能“什么都不做”500秒吗?我发现了beginBackgroundTaskWithExpirationHandler方法。幸运的是,这允许任何通知(在我的例子中是MPMusicLayerController NowPlayingItemDidChangeNotification)在这段时间内仍然激发,随后会触发我编写的后续方法。我会写一篇详细介绍这种方法的文章…嗨,你能发布你的解决方案吗?有人想出了这个问题的解决方案吗?歌曲更改时,500秒计时器是否自动重置?否则就不够了。