Mar*_*eIV 8 ipod remote-control background-application mpmusicplayercontroller ios4
我已经花了两天时间在这上面并且无处可去.我正在尝试使用[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'的事情,人们一直在回答问题.)
标记
我解决了 这里的信息是我的另一个问题......
Stack Overflow:在接收遥控事件时播放iPod音乐
...但是短版本是你必须使用AVPlayer(但不是AVAudioPlayer.不知道为什么会这样!)来自你从库中获得的MPMediaItem的资产URL,然后将音频会话的类别设置为Playable(不要启用) mixable!)并将相应的键添加到info.plist文件中,告诉操作系统您的应用程序想要支持背景音频.
这使您可以播放iPod库中的项目(Audible.com文件除外,出于某种原因!)并且仍然可以获得远程事件.诚然,你必须做更多的工作,因为这是你的音频播放器是分开的,并且将中断iPod应用程序(这可能会或可能不会是可取的.再次,不要启用混合或iPod应用程序会劫持遥控事件)但那些是休息!