在 iOS 中使用 EPSSampler 时使用系统通道而不是振铃通道

Posted

技术标签:

【中文标题】在 iOS 中使用 EPSSampler 时使用系统通道而不是振铃通道【英文标题】:Use system channel instead of ringer channel when using EPSSampler in iOS 【发布时间】:2017-09-14 16:02:09 【问题描述】:

我正在使用EPSSampler 在我的小型 ios 应用中播放一些音符。它工作得很好,除了声音是通过铃声设置而不是系统音量设置来控制的。问题是,如果关闭铃声,我的应用程序就不会发出声音。

我能找到的最接近的是this SO question,但我无法将该解决方案完全转化为我的解决方案,因为我无法将其与 EPSSampler 的代码匹配。有什么见解吗?

编辑澄清一下,EPSSampler 类中包含唯一专门处理音频的代码,我的应用程序只是实例化它,加载 AUSampler 预设,并调用 EPSSampler 中的音符播放方法,所以解决方案需要在 EPSSampler 而不是我的应用程序中进行更改——这就是我不发布任何源代码的原因。

【问题讨论】:

【参考方案1】:

原来这与 EPSSampler 无关,而与配置音频会话无关。下面的代码成功了。

NSError *error = nil;
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:&error];

那会教我RTFM。

【讨论】:

【参考方案2】:

对于 swift(初始化音乐时使用):

_ = try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)

【讨论】:

以上是关于在 iOS 中使用 EPSSampler 时使用系统通道而不是振铃通道的主要内容,如果未能解决你的问题,请参考以下文章

OC中获取系相应目录的几种方法

iOS - 如何使用 Core Data 将 2 个实体迁移到 1 个?

iOS核心数据对象的唯一标识符?

ios SystemSound 不会响应音量按钮

Hibernate中一对多和多对一关系

开发团队在 iO 上签名代码时不支持关联域功能