【发布时间】:2013-10-30 19:37:51
【问题描述】:
在 iOS7 到来之前,我们注意到一个问题:
来自耳塞或跳板的音乐remote-control 可以劫持我们的音频会话,即使我们将类别设置为solo-ambient 或其他独家模式。
因此我们尝试了一些方法:
我们试图收回音频会话的所有权。但这要求我们的音频代码知道何时将其取回以及从谁那里取回。我们认为我们可以让应用程序代码成为远程控制事件的第一响应者,做我们的事情,然后将事件传递给音乐应用程序。但是,我们发现事件被第一响应者扣留,无法将其推回命令链。
当我们在
solo-ambient时,我们试图成为第一反应者并一起阻止远程控制事件。这在 iOS6 上运行良好,在 iOS7 中仍然适用于耳塞控制,但在 iOS7 的control center下失败。control center似乎完全绕过了remote-control事件处理程序remoteControlReceivedWithEvent,我们在其中放置了阻塞代码。
我在其他地方读到了一些东西:
您无法屏蔽音乐应用。你的应用程序可以成为一个(苹果 不会喜欢的)然后控制中心会控制你的。
但我没有找到任何关于 control center 的文档。
而且如上所述,即使应用程序是第一响应者,控制中心也不会进入正常的远程控制钩子。
另一个引用P
远程控制事件处理使您的应用程序可以通过 控制中心、耳塞等等……不是让你的应用可以吃 所述控件,防止从所述来源控制其他应用程序。它 由于iOS中的一个错误,只能在iOS6中使用,现在在iOS7中修复了
是因为这个错误导致的吗?我很难相信,因为我们在这个列表和 Xcode 邮件列表中找到了解决方案,所以我认为这是一个公认的解决方案。
现在我们真的想知道我们是否从一开始就错过了什么:
solo-ambient 真的是音频会话的专有模式,还是音乐应用程序是这种专有性的例外?
我们的应用程序如何与remote-control 和control center 和谐相处?
我们在哪里可以找到remote-control 和control center 的最新文档?
【问题讨论】:
标签: ios7 core-audio remote-control control-center