ios - 开始在后台播放声音 IOS 7

标签 ios objective-c audio background

我在这里找到了一些有用的提示,但为了确定我的要求是否可以在此处实现,这是一个简短的列表。

我有一个大部分时间在后台运行的应用程序。该应用程序“存在”长达几个小时,在某个时间点我需要播放警报声。

所以我发现我需要启动一个 AVQueuePlayer 并添加一个持续播放的静音,直到我需要播放其他声音。是吗?

所以我创建了一个单例类 (SoundService),我在其中初始化队列播放器中的静音和警报声。 当应用程序进入后台时,我启动播放器并播放静音。如果我需要在应用程序处于后台时播放我的闹钟声音,它应该可以工作,对吗?

现在我的实现不起作用,但我的方法是否正确?

谢谢

最佳答案

您无法在后台启动音频。音频背景模式唯一允许您做的就是在应用从前台转到后台时继续产生声音。

但是,如果您的应用能够接收远程事件,并且它已经产生了声音,因此它是远程事件目标,那么在音频背景模式下,它可以继续作为远程事件目标,因此可以产生背景声音,只要在此期间没有其他应用程序成为远程事件目标。

在后台发出声音的最可靠方法是将声音附加到本地通知。

notification.soundName = UILocalNotificationDefaultSoundName;
notification.soundName = @"mySound.caf";

确保声音确实在您的应用程序包中,格式正确(线性 PCM 或 IMA4)。 您可以使用以下方法从 wav 和 mp3 转换:

afconvert -f caff -d LEI16@44100 -c 1 original.wav mySound.caf

关于ios - 开始在后台播放声音 IOS 7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24758946/

相关文章:

ios - UIScrollView/UITableView 设置 ContentOffset 会杀死惯性/滚动吗?

iphone - 像在 iBooks 中一样创建可编辑的 GridView

ios - Swift 中的幻灯片转场

ios - iOS 标签首行宽度不同

ios - 具有多个部分的 UITableView 仅显示一个部分

objective-c - NSManagedObject 作为存储并持续分析原始数据

ios - 如何更改 UITableViewRowAction 标题颜色?

c++ - AudioUnit 中的输入缓冲区结构

java - 如何确定OGG文件的长度

python - 比较两个音频文件