我在这上面花了两天时间,却一无所获。我正在尝试使用 [MPMusicPlayerController applicationMusicPlayer] 播放从用户的 iPod 库中选择的音频并让它在后台运行并支持远程事件。现在让音乐真正播放是很容易的部分。获取实例,选择歌曲,分配音乐队列并播放。做完了。但是...a)我无法让它在后台播放,b)即使在前台我也无法让远程控制事件工作!
在你问之前,是的,我已经设置了 plist 条目、音频会话类别、说我有兴趣获取远程事件的电话并设置了第一响应者来监听它们,所以请知道,是的,我已经阅读了我能找到的关于该主题的每一个文档*(*我责怪 Apple 的一项任务,因为它在这个主题上一点也不清晰,也没有任何示例代码!)我看过每一篇与它相关的 WWDC 视频(甚至冻结屏幕以完全从他们的示例中复制代码......)所以除非我错过了不在此列表中的内容,否则回复任何这些答案都无济于事。
还有一件事......我明确谈论使用 MPMusicPlayerController 根据文档,它从不使用应用程序会话。它总是使用系统会话。(也许这本身就回答了我的问题,但文档并没有明确说明,所以我不确定,因此这个问题。)
也就是说,两天后,我的想法是这样的:
使用 MPMusicPlayerController 时,无论您调用什么方法或设置什么 plist 条目,您的应用都不会在后台运行。时期。如果您使用 ipodMusicPlayer 实例,音乐会继续播放,但那是因为播放的是 iPod,而不是您的应用程序。如果您改用 applicationMusicPlayer 实例,则在进入后台时,您的音乐将停止。在这两种情况下,您的应用都会被暂停。
无论您使用 ipodMusicPlayer 或 applicationMusicPlayer 实例,所有远程事件都会转到 iPod 应用程序本身,而不是您的,即使您已明确要求它们。如果您正在使用 applicationMusicPlayer 实例并且您使用遥控器选择“播放”,则 iPod 应用程序会收到该命令,因此您的音频会消失并被中断,并在 iPod 应用程序中开始播放。如果您选择了 ipodMusicPlayer,那么当然没关系,因为您已经明确表示您基本上只是对远程控制 iPod 应用程序感兴趣,这又是实际接收远程事件的内容。
底部快速切换控件中的图标永远不会更改为您的应用程序的图标,因为您的应用程序从未真正设置为接收事件。iPod 应用程序是,这就是它的图标确实出现在那里的原因。
所以我想知道的是……我错了吗?有没有人成功使用 MPMusicPlayerController 并能够拦截远程事件?虽然我更喜欢使用带有背景音乐支持的 applicationMusicPlayer,所以我不会使用用户的 iPod,但更重要的是远程控制通知,这意味着如果我必须使用 ipodMusicControl 并将我的应用程序保持在前台以拦截那些消息,就这样吧。那样很难看,但至少它是一些东西。
非常感谢代码示例或至少针对内置应用程序模板之一的明确步骤。(甚至不需要实施......只是步骤。希望这将安抚人们不断回答问题的不可避免的“它仍在 NDA 之下”的事情。)
标记