8

我已经花了两天的时间,并没有得到任何好处。我正在尝试使用[MPMusicPlayerController applicationMusicPlayer]播放从用户的iPod库中选择的音频,并让它在后台运行以及支持远程事件。现在让音乐真正发挥是很容易的部分。获取实例,挑选歌曲,分配音乐队列并播放。完成并完成。但是...... a)我无法在后台播放,b)即使在前台,我也无法让遥控器事件发挥作用!在iOS 4上使用MPMusicPlayerController支持背景音频和远程控制。这甚至有可能吗?

在你问之前,是的,我已经设置了plist条目,音频会话类别,打电话说我有兴趣获得远程事件并设置第一响应者来听取它们,所以请知道,是的,我读过阅读对象的每一个文件,我能找到*(*我责怪苹果对于没有说清楚在所有关于这个话题,也不是拥有它!任何示例代码任务),我看过每一个有关它(甚至冻结屏幕,从他们的榜样正是复制代码...)所以,除非我已经错过了一些东西不在这个列表中的WWDC视频,与任何这些答案的回答是不会帮帮我。

一件事...我明确地谈论它使用根据该文档,从不使用应用程序会话的MPMusicPlayerController。它总是使用系统会话。 (也许这本身就是回答我的问题,但该文档不明确说,所以我不知道,因此这个问题)

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

  1. 当使用MPMusicPlayerController,不管你叫什么方法或您所设置的plist条目,您的应用程序将永远不会在后台运行的。期。如果您使用ipodMusicPlayer实例,则音乐会继续播放,但这是因为它是播放的iPod,而不是您的应用。如果您使用applicationMusicPlayer实例,则在进入背景时您的音乐会停止。在这两种情况下,您的应用都会被暂停。

  2. 无论您使用的是ipodMusicPlayer还是applicationMusicPlayer实例,即使您明确要求,所有远程事件都会转到iPod应用程序本身,而不是您自己。如果您正在使用applicationMusicPlayer实例,并且您使用遥控器选择“播放”,则iPod应用程序会收到该命令,以使您的音频消失并中断,并在iPod应用程序中开始播放。如果您选择了ipodMusicPlayer代替,那么当然它不会因为你明确地说你基本上是在远程控制iPod的应用程序再次,是实际接收远程事件只是有兴趣关系。

  3. 在底部的快速开关控制图标,因为再次,你的应用从来没有真正建立接收的事件不会改变你的应用程序的图标。 iPod应用程序是,这就是它的图标确实出现在那里的原因。

所以我想知道的是......我在这里错了吗?有没有人能够成功地使用MPMusicPlayerController并能够拦截远程事件?虽然我宁愿使用背景音乐的支持applicationMusicPlayer所以我不与用户的iPod口沫横飞,更大的是遥控器的通知,这意味着如果我不得不使用ipodMusicControl并保持我的应用程序在前台拦截那些消息,就这样吧。这样很丑陋,但至少它是某种东西。

代码示例,或至少明确的步骤针对的内置应用模板,将不胜感激之一。 (甚至不需要执行......只是步骤,希望能够安抚不可避免的“它仍然处于NDA之下”,人们不断回答问题。)

马克

回答

8

我解决它。该信息是我在这里的其他问题......

Stack Overflow: Play iPod music while receiving remote control events

...但短期的版本是,你必须使用AVPlayer(但不是AVAudioPlayer。不知道这是为什么!)与资产网址从您从库中获得的MPMediaItem,然后将音频会话的类别设置为可播放(不要启用混音!),并将适当的键添加到您的info.plist文件,告诉您的应用程序想要支持背景音频的操作系统。

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

+0

非常感谢你发布这个! – genkilabs 2011-08-10 12:53:42

+0

没问题。真令人沮丧的是,苹果并不清楚那里发生了什么。更令人沮丧的是(尽管DRM原因可以理解),你不能这样做可听文件,这毁了我们的应用程序,因为这是主要焦点。你可以做什么!不过,很高兴这有助于。 – MarqueIV 2011-08-15 09:01:12

2

谁想要知道,我找到了让音频播放的背景下,你必须设置音频会话的类别可播放,然后背景音乐作品就好。如果您还想同时播放自己的声音,则必须将该类别标记为可混合。这解决了背景音乐部分。但是我发现,任何时候iPod都在播放,您似乎无法获得远程通知。

下面是更新线程...

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

中号

+0

这个人是怎么做到的?啊!!! http://www.engadget.com/2010/07/08/ios-4-adds-direct-access-to-itunes-library-iphone-dj-apps-about/ – MarqueIV 2010-07-09 00:22:19

+0

嗨,你如何录制音频背景? – Namratha 2011-02-17 03:50:01

相关问题