iOS 9以静音模式播放音频,但保持其他应用程序的音乐播放运行

时间:2015-08-29 15:18:07

标签: ios audio

我的应用程序中有一些警告声但我真的需要背景音乐(例如Spotify)才能继续在后台运行。

我解决了这个问题
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryAmbient error:nil];

但是,在静音模式下,我的AVAudioPlayer静音但声音很重要,即使在静音模式下也是如此。我读到AudioServicesPlaySystemSound忽略静默模式,但它没有,至少在iOS9上没有。

还有其他可能吗?哦,请浪费你的时间,比如说"我会讨厌这个用户","它不被称为SILENT模式",...这是一个编程页面,而不是哲学课。

2 个答案:

答案 0 :(得分:6)

音频会话类别 AVAudioSessionCategoryAmbient 将遵循文档中所述的响铃/静音开关 -

  

AVAudioSessionCategoryAmbient   声音播放非主要应用的类别 - 也就是说,您的应用可以在关闭声音的情况下成功使用...

     

...通过屏幕锁定和静音开关(在iPhone上称为响铃/静音开关)使您的音频静音。

我建议使用混合选项(例如

)尝试更适合的类别
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback 
                                 withOptions:AVAudioSessionCategoryOptionMixWithOthers 
                                       error:nil];

AVAudioSessionCategoryPlayback 类别将忽略文档中提到的静默开关 -

  

使用此类别时,您的应用音频会继续将静音开关设置为静音或屏幕锁定。

答案 1 :(得分:0)

我将代码放在按钮上以播放音频:

这也适用于更新的iOS版本(我在iOS 12中使用该版本)

(以静音模式播放背景音乐,同时单击按钮时同时在您的应用中播放音频)

import AVFoundation

var audioPlayer = AVAudioPlayer()

@IBAction func btnAudioClickableAct(_ sender: Any) {

    let audioSession = AVAudioSession.sharedInstance()
    try!audioSession.setCategory(AVAudioSessionCategoryPlayback, with: AVAudioSessionCategoryOptions.mixWithOthers)

    if let path = Bundle.main.path(forResource: "activityAudio", ofType: "mp3") {

        let filePath = NSURL(fileURLWithPath:path)
        audioPlayer = try! AVAudioPlayer.init(contentsOf: filePath as URL)
        audioPlayer.prepareToPlay()
        audioPlayer.play()

    }

}