4

我正在做一些音频流与iOS 7的Multipeer Connectivity框架。流式传输效果很好,但是当我将应用放在背景上时,它停止工作。Multipeer连接音频流停止在后台工作

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

  • 而且,如果它是一个框架限制,是否有可能做一些事情来避免这种情况?

  • 我可以使用后台任务来保持流和音乐在后台工作吗?

  • 可以做到这一点吗?如果不可行,请在iOS设备之间为MultiPeer音频流设置替代方案吗?

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

本页内容翻译:http://robots.thoughtbot.com/streaming-audio-to-multiple-listeners-via-ios-multipeer-connectivity

非常感谢!

+0

有关该主题的任何更新?评论期间你的应用程序是否被拒绝?我至少阅读了一个将音频流式传输到多个iOS设备并从App Store中删除的示例应用程序。 –

+0

我已经使用TDAudioStreamer,但它不播放音频,只是显示歌曲文件的图像和信息。你能告诉我你是如何实施的? –

回答

3

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

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

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

这意味着iOS应该认识到您正在通过Core Audio播放音频,并保持您的应用程序未挂起,只要您已将应用程序正确配置为在后台播放音频即可。

因为您的应用程序在播放媒体文件时未挂起,所以当您的应用程序位于后台时,回调操作正常。不过,在你的回调中,你应该只做必要的工作来提供回放数据。例如,流式音频应用程序需要从其服务器下载音乐流数据并将当前音频样本推出用于回放。应用不应执行与播放无关的任何无关任务。

只要您的应用程序仍在播放音频,并且允许您继续播放音频,就可以继续播放音频,您应该可以正常运行。这意味着您应该能够在后台继续使用MPC来接收音频数据并播放它。

请务必阅读有关该主题的完整文档,特别是关于Audio Sessions

+0

你有全部的理由,真的谢谢! 嗯,我需要等待19小时才能提出你的观点:D! –

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。您可以从上面提供的链接中找到更多信息。

+0

您描述的背景模式用于通过网络下载后台数据以保持数据最新。这不是像多码流这样的东西。这只会每隔几小时调用一次,以保持内容在应用程序中保持最新状态,不定时以及由iOS系统自行确定。 –

+0

编辑我的回答 – JuJoDi

+0

谢谢,但如果MultiPeer Connectivity框架不可行,我还能做什么?是否可以同时将音乐串流到多个设备?我读了很多,但我找不到正确的方法。 –