У меня возникла проблема при попытке использовать категорию 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