iOS在后台运行时如何接收媒体播放器通知

4

可能是一个简单的问题 - 当iOS应用程序进入后台后,它是否可以继续接收媒体播放器通知[NSNotifications](即MPMusicPlayerControllerNowPlayingItemDidChangeNotification)?

我特别使用iPodMusicPlayer在我的主要应用功能中播放歌曲,并且在应用程序进入后台模式后,我希望尝试实现此通知下的代码。

不是要求代码; 只是指向正确的方向关于后台媒体通知;)

1个回答

2

我已经进行了一些检查,因为我需要相同的东西。

不幸的是,我发现您的应用程序在后台时无法接收通知。

然而,我意识到一旦恢复,它确实会接收到整个通知队列。问题在于通知都一起接收,无法得知它们被触发的时间和日期。

当然,由于您一次性接收到所有通知,即使在MPMusicPlayerControllerNowPlayingItemDidChangeNotification之后尝试保存nowPlayingItem,当您的应用程序再次变为活动状态时,只会看到当前项,没有其他信息。

不幸的是,我认为我们无法做更多的事情,因为Apple文档也说:

通知没有userInfo字典

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


我实际上已经找到了一个解决方案(或者更准确地说,是一个变通方法):我只是在appdelegate类中使用了didenterbackground方法来请求允许的最大额外时间(我认为是500秒)。这样,如果通知在这500秒窗口内(大多数歌曲都是),它就会触发! :) - user1736431
好的,但是在那个额外的时间里,你进行了什么样的操作?你能不能只是“无所事事”500秒? - super
2
我发现了beginBackgroundTaskWithExpirationHandler方法。幸运的是,在此期间允许任何通知(在我的情况下为MPMusicPlayerControllerNowPlayingItemDidChangeNotification)仍然被触发,随后我编码的后续方法也会紧随其后。我将寻找详细说明该方法的文章…… - user1736431
1
你好,你能把你的解决方案发一下吗? - Se Won Jang
有人解决了这个问题吗?当歌曲改变时,500秒计时器会自动重置吗?否则时间不够。 - David Schumann

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接