首页 文章

背景音频和远程控制支持在iOS 4上使用MPMusicPlayerController . 这甚至可能吗?

提问于
浏览
8

我花了两天时间在这上面并且无处可去 . 我正在尝试使用[MPMusicPlayerController applicationMusicPlayer]播放从用户的iPod库中选择的音频,让它在后台运行并支持远程事件 . 现在让音乐真正播放是很容易的部分 . 获取实例,选择歌曲,分配音乐队列和播放 . 做完了 . 但是...... a)我无法让它在后台播放,而b)即使在前台我也无法让遥控器事件发挥作用!

在你问之前,是的,我已经设置了plist条目,音频会话类别,打电话说我'm interested in getting remote events and set up a first responder to listen for them, so please know, yes, I'读取了我能找到的主题上的每一个文件*(*一个任务我责怪Apple因为没有在这个主题上根本没有明确的,也没有任何示例代码!)我和've watched every one of the WWDC videos relating to it (even freezing the screen to copy the code exactly from their example...) so unless I'错过了不在此列表中的内容,回复任何这些答案都无济于事 .

还有一件事......我明确地谈到使用根据文档的MPMusicPlayerController,从不使用应用程序会话 . 它始终使用系统会话 . (也许这本身就回答了我的问题,但是文档没有明确说明,所以我不确定,因此这个问题 . )

也就是说,两天后,我的想法是这样的:

  • 使用MPMusicPlayerController时,无论您调用哪种方法或设置了哪些plist条目,您的应用程序都不会在后台运行 . 期 . 如果您使用ipodMusicPlayer实例,音乐会继续播放,但那是因为它是正在播放的iPod,而不是您的应用 . 如果您使用的是applicationMusicPlayer实例,那么在转到后台时您的音乐会停止 . 在这两种情况下,您的应用都会被暂停

  • 无论您使用ipodMusicPlayer还是applicationMusicPlayer实例,所有远程事件都会转到iPod应用程序本身,而不是您的应用程序,即使您明确要求它们也是如此 . 如果您正在使用applicationMusicPlayer实例并使用遥控器选择“播放”,则iPod应用程序会收到命令,以便您的音频消失并中断并在iPod应用程序中开始播放 . 如果您选择了ipodMusicPlayer,那么当然它并不重要,因为您明确表示您基本上只对远程控制iPod应用程序感兴趣,这也是实际接收远程事件的原因 .

  • 底部快速切换控件中的图标永远不会更改为应用程序的图标,因为再次,您的应用程序实际上从未设置为接收事件 . iPod应用程序,这就是它的图标出现在那里的原因 .

所以我想知道的是......我错了吗?有没有人成功地使用MPMusicPlayerController并能够拦截远程事件?虽然我更喜欢使用带有背景音乐支持的applicationMusicPlayer,所以我不会弄乱用户的iPod,更重要的是远程控制通知,这意味着如果我必须使用ipodMusicControl并保持我的应用程序在前台拦截那些消息,就这样吧 . 这样丑陋,但至少它是一些东西 .

代码示例,或至少针对其中一个内置应用模板的明确步骤将非常感激 . (甚至不需要实施......只是步骤 . 希望这将安抚不可避免的'它仍然在NDA'的事情,人们一直在回答问题 . )

标记

2 回答

  • 8

    我解决了这里的信息是我的另一个问题......

    Stack Overflow: Play iPod music while receiving remote control events

    ...但是短版本是你必须使用AVPlayer(但不是AVAudioPlayer . 不知道为什么会这样!)来自你从库中获得的MPMediaItem的资产URL,然后将音频会话的类别设置为Playable(不要启用) mixable!)并将相应的键添加到info.plist文件中,告诉操作系统您的应用程序想要支持背景音频 .

    这使您可以播放iPod库中的项目(Audible.com文件除外,出于某种原因!)并且仍然可以获得远程事件 . 当然,你必须做更多的工作,因为这是你的音频播放器,它是独立的,并将中断iPod应用程序(这可能是也可能不是 . 也是如此 . 再次,不要启用混音或iPod应用程序将劫持遥控事件)但那些是休息!

  • 2

    对于任何想要了解的人,我发现要在后台播放音频,你必须将音频会话的类别设置为Playable,然后背景音频才能正常工作 . 如果您还想同时播放自己的声音,则必须将该类别标记为可混合 . 这解决了背景音乐部分 . 但我发现,无论何时iPod正在播放,您似乎都无法获得远程通知 .

    这是更新的帖子......

    How can you play music from the iPod app while still receiving remote control events in your app?

    中号

相关问题