-1

在 iOS7 到来之前,我们注意到一个问题:remote-control即使我们将类别设置为solo-ambient或其他独占模式,来自耳塞或跳板的音乐也会劫持我们的音频会话。

因此,我们尝试了一些事情:

  1. 我们试图收回音频会话的所有权。但这要求我们的音频代码知道何时将其取回以及从谁那里取回。我们认为我们可以让应用程序代码成为远程控制事件的第一响应者,做我们的事情,然后将事件传递给音乐应用程序。但是,我们发现事件被第一响应者扣留,无法将其推回命令链。

  2. 当我们在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

4

1 回答 1

0

使用 iOS7 SDK 清理构建所有内容后,遥控器已神秘修复。现在应用代理可以从控制中心接收远程控制事件。但是,播放/暂停事件是 UIEventSubtypeRemoteControlPause 和 UIEventSubtypeRemoteControlPlay 而不是 iOS6 的 UIEventSubtypeRemoteControlTogglePlayPause。

于 2013-10-31T16:13:10.580 回答