iOS AVAudioSessionCategory непредвиденное поведение - PullRequest
0 голосов
/ 03 сентября 2018

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

...