尝试在音频会话中使用AVAudioSessionCategorySoloAmbient
类别时遇到问题。
我的意图是在ViewController第一次打开时播放声音。但仅当铃声已打开
时但是,无论铃声是打开还是关闭,声音都会播放。
我无权访问设备,所以我只在模拟器上进行测试。
这是一个全新的项目,所有内容都是XCode自动生成的,仅更改了以下文件
ViewController如下
import UIKit
import AVFoundation
class ViewController: UIViewController {
var audioPlayer: AVAudioPlayer?
override func viewDidLoad() {
super.viewDidLoad()
do {
try self.playSound(file: "startup", ext: "wav")
} catch {
print("Something went wrong")
}
}
func playSound(file: String, ext: String) throws {
let path = Bundle.main.path(forResource: file, ofType: ext)!
let url = URL(fileURLWithPath: path)
let session = AVAudioSession.sharedInstance()
try session.setCategory(AVAudioSessionCategorySoloAmbient)
try session.setActive(true)
self.audioPlayer = try AVAudioPlayer(contentsOf: url)
self.audioPlayer?.prepareToPlay()
self.audioPlayer?.play()
}
}
据我了解,无论如何,我想要的应该是默认行为。所以我也试过省略以下几行。但是,同样的事情也会发生。
let session = AVAudioSession.sharedInstance()
try session.setCategory(AVAudioSessionCategorySoloAmbient)
try session.setActive(true)
我正在使用Swift 4.1