4

我正在使用 iOS 7 的Multipeer Connectivity框架做一些音频流。流媒体运行良好,但是当我将应用程序置于后台时,它停止工作。

有人可以告诉我这是框架限制,还是我做错了什么?

  • 而且,如果这是一个框架限制,是否有可能采取措施避免这种情况?

  • 我可以使用后台任务来保持流媒体和音乐在后台运行吗?

  • 有可能这样做吗?如果不可能,MultiPeeriOS 设备之间的音频流是否存在任何替代方案?

我正在使用这个例子:https ://github.com/tonyd256/TDAudioStreamer 。

在此页面上进行了解释:http ://robots.thoughtbot.com/streaming-audio-to-multiple-listeners-via-ios-multipeer-connectivity 。

非常感谢!

4

2 回答 2

3

用于在后台播放音频的 Apple 文档中(向下滚动一点)。一些相关段落:

当 UIBackgroundModes 键包含音频值时,系统的媒体框架会自动阻止相应的应用程序在移动到后台时被挂起。只要它正在播放音频或视频内容或录制音频内容,应用程序就会继续在后台运行。但是,如果录制或播放停止,系统将暂停应用程序。

您可以使用任何系统音频框架来处理背景音频内容,并且使用这些框架的过程保持不变。

这意味着,只要您正确配置了应用程序以在后台播放音频,iOS 就应该识别出您正在通过 Core Audio 播放音频,并让您的应用程序保持未挂起状态。

由于您的应用在播放媒体文件时不会暂停,因此当您的应用在后台时,回调会正常运行。但是,在您的回调中,您应该只做为回放提供数据所必需的工作。例如,流式音频应用程序需要从其服务器下载音乐流数据并将当前音频样本推送出去以进行播放。应用程序不应执行任何与播放无关的无关任务。

只要您的应用仍在播放音频,您就应该能够正常运行,并且可以执行所需的操作以继续播放音频。这意味着您应该能够在后台继续使用 MPC 来接收音频数据并进行播放。

请务必阅读有关该主题的完整文档,尤其是有关音频会话的文档。

于 2014-02-20T16:22:56.340 回答
2

iOS 设备在用户后台运行后,出于明确目的而获得有限的 cpu 周期。

根据Apple关于后台多任务和执行的文档,支持以下类型的应用程序,但必须明确声明:

  • 在后台向用户播放有声内容的应用程序,例如音乐播放器应用程序
  • 在后台录制音频内容的应用程序。
  • 让用户随时了解其位置的应用程序,例如导航应用程序
  • 支持互联网协议语音 (VoIP) 的应用程序
  • 需要定期下载和处理新内容的应用
  • 从外部配件接收定期更新的应用程序

您的案件属于Apps that play audible content to the user while in the background, such as a music player app. 您可以从上面提供的链接中找到更多信息。

于 2014-02-20T15:00:48.750 回答