Multipeer Connectivity音频流停止在背景上工作

时间:2014-02-18 14:36:58

标签: iphone objective-c ios7 audio-streaming multipeer-connectivity

我正在使用iOS 7的Multipeer Connectivity框架进行一些音频流。流式传输效果很好,但是当我将应用程序放在后台时,它就会停止工作。

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

  • 并且,如果是框架限制,是否可以采取措施避免这种情况?

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

  • 可以这样做吗?如果无法实现,iOS设备之间的MultiPeer音频流是否存在替代方案?

我正在使用此示例:https://github.com/tonyd256/TDAudioStreamer

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

非常感谢!

2 个答案:

答案 0 :(得分:3)

Apple documentation for playing audio in the background上(向下滚动一下)。一些相关段落:

  

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

     

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

这意味着只要您已正确配置应用以在后台播放音频,iOS就会识别您正在通过Core Audio播放音频并保持应用程序不被暂停。

  

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

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

请务必阅读有关此主题的完整文档,尤其是有关Audio Sessions

的文档

答案 1 :(得分:2)

iOS设备获得有限的cpu周期,以便在用户背景时明确显示。

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

  • 在后台播放用户可听内容的应用,例如音乐播放器应用
  • 在后台录制音频内容的应用。
  • 随时向用户通知其位置信息的应用,例如导航应用
  • 支持互联网协议语音(VoIP)的应用
  • 需要定期下载和处理新内容的应用
  • 从外部附件接收定期更新的应用

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