ios4 - 在 iOS 4 上使用 MPMusicPlayerController 支持后台音频和远程控制。这甚至可能吗?

标签 ios4 ipod mpmusicplayercontroller remote-control background-application

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

在你问之前,是的,我已经设置了 plist 条目、 Audio Session 类别、说我有兴趣获取远程事件的电话并设置了第一响应者来监听它们,所以请知道,是的,我我已经阅读了我能找到的关于该主题的每一个文档*(*我责怪 Apple 的一项任务,因为它在这个主题上一点也不清晰,也没有任何示例代码!)而且我看过每一篇与它相关的 WWDC 视频(甚至卡住屏幕以完全从他们的示例中复制代码......)所以除非我错过了不在此列表中的内容,否则回复任何这些答案都无济于事。

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

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

  • 使用 MPMusicPlayerController 时,无论您调用什么方法或设置什么 plist 条目,您的应用都不会在后台运行。时期。如果您使用 ipodMusicPlayer 实例,音乐会继续播放,但那是因为播放的是 iPod,而不是您的应用程序。如果您改用 applicationMusicPlayer 实例,则在进入后台时,您的音乐将停止。在这两种情况下,您的应用都会被暂停。
  • 无论您使用 ipodMusicPlayer 还是 applicationMusicPlayer 实例,所有远程事件都会转到 iPod 应用程序本身,而不是您的,即使您已明确要求它们。如果您正在使用 applicationMusicPlayer 实例并使用 Remote 选择“播放”,则 iPod 应用程序会收到该命令,因此您的音频会消失并被中断,并在 iPod 应用程序中开始播放。如果您选择了 ipodMusicPlayer,那么当然没关系,因为您已经明确表示您基本上只是对远程控制 iPod 应用程序感兴趣,这又是实际接收远程事件的内容。
  • 底部快速切换控件中的图标永远不会更改为您的应用程序的图标,因为您的应用程序从未真正设置为接收事件。 iPod 应用程序是,这就是它的图标确实出现在那里的原因。

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

    非常感谢代码示例或至少针对内置应用程序模板之一的明确步骤。 (甚至不需要实现......只是步骤。希望这将安抚人们不断回答问题的不可避免的“它仍在 NDA 之下”的事情。)

    标记

    最佳答案

    我解决了。该信息在我的另一个问题中...

    Stack Overflow: Play iPod music while receiving remote control events

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

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

    关于ios4 - 在 iOS 4 上使用 MPMusicPlayerController 支持后台音频和远程控制。这甚至可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3175974/

    相关文章:

    iphone - UITextView 部分渲染一行文本

    iPhone:按顺序自动播放视频,一个接一个

    background - iPod - 让原生音乐应用在后台播放声音

    ios - 如何从 WKWebView 获取当前在我的应用程序中播放的音频 URL?

    ios - 在 iOS 11 中播放音乐库时更改和隐藏音量 HUD(音量叠加)

    ios4 - 打开iPhone或iPad到App Store更新区域

    objective-c - 将 NSString 转换为 C 字符串,递增并返回到 NSString

    iphone - 在 iOS 上停止 AVPlayer

    iphone - 如何暂停循环以请求输入 (iPhone)

    ios - 在后台播放Apple Music