在iOS 9静音模式下播放声音

11

在iOS 9(Xcode 7,Swift 2.0)中,我正在尝试使用以下代码在静音模式下播放声音:

try! AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, withOptions: .MixWithOthers)
try! AVAudioSession.sharedInstance().setActive(true)
AudioServicesPlayAlertSound(1005)

根据其他答案和苹果的文档,我认为这个应该可以工作,但是在iOS 9静音模式下不会播放声音。在非静音模式下可以播放音频。来自苹果的文档:

AVAudioSessionCategoryPlayback -- 仅限播放。即使屏幕锁定并且Ring/Silent开关设置为静音,也会播放音频。对于音频播放至关重要的应用程序,请使用此类别。

我是漏掉了什么还是有其他/新方法可以使它工作?


3
希望它不起作用。如果我把手机设为静音模式,那我就不希望应用程序发出声音。那正是静音模式的目的所在。 - rmaddy
2
从苹果的文档上看,这应该是可能的。我正在用它作为计时器应用程序,即使手机处于静音模式下,它也应该播放,因为这非常重要。 - lammert
@lammert,您能找到与此相关的任何内容吗?请建议我如何在iOS 8及更高版本中特别是静音模式下使用它。 - Abha
@lammert 不确定这里发生了什么,但这绝对可以工作(我刚刚测试过)。我会怀疑这里有一个不同的问题。你尝试使用自己的音频文件了吗? - Firo
@rmaddy 如果你想要所有的东西都静音,但是这个应用程序除外怎么办?比如说在工作中帮助你?想象一下你是一个面包师傅,你不想被打扰,但是你想让你的烘焙应用程序为你正在烘焙的多种食物设置闹钟。如果这个应用程序很烦人,人们就会卸载它。 - Dpedrinha
2个回答

5
这是我的代码:

do {
    try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, withOptions: AVAudioSessionCategoryOptions.MixWithOthers)
    }
catch {
        // report for an error
    }

AudioPlayer.play()

它在我的iPhone上工作。

祝你好运!


@user3427013 这段代码不应该一直播放声音吗?如果你想停止,可以使用 AudioPlayer.stop() - Bright

0

对于Swift 3.2:

do {
        try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: AVAudioSessionCategoryOptions.duckOthers)
    }
    catch {
        // report for an error
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接