Как воспроизводить звуки, например, гудок при использовании Callkit? - PullRequest
0 голосов
/ 22 мая 2019

Я пытаюсь реализовать VoIP, используя webRTC и Callkit.Звук прекрасно работает во время вызова, но я хотел бы воспроизводить звуки для пользователя, когда пользователь инициирует вызов (исходящий вызов).

Когда пользователь инициирует вызов и ожидает, пока получательответ, я хотел бы воспроизвести звуковой сигнал ожидания (длинные гудки).Мне удается воспроизвести звук без использования Callkit, но когда я сообщаю Callkit об исходящем звонке, это как-то отменяет звук.Я предполагаю, что он делает это, потому что IOS отключает звук во время вызова.

Итак, мой вопрос, как я могу воспроизвести файл mp3, когда Callkit активен.Или этот звук ожидания как-то интегрирован в Callkit или WebRTC?

Я возился с разными категориями для аудиосессии, но пока не повезло.Ниже приведена сводная информация о моем текущем коде.

public var audioPlayer: AVAudioPlayer?

private init() {
    do {
        audioPlayer = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: Bundle.main.path(forResource: "dialring", ofType: "mp3")!))
        audioPlayer!.prepareToPlay()
        audioPlayer!.numberOfLoops = -1 //loop
    } catch {
        print(error.localizedDescription)
    }
}

func provider(_ provider: CXProvider, perform action: CXStartCallAction) {
    configureAudioSession()
    audioPlayer?.play()
}

func configureAudioSession() {
    print("Configuring audio session")
    let session = AVAudioSession.sharedInstance()
    do {
        try AVAudioSession.sharedInstance().setCategory(.playAndRecord, options: [.mixWithOthers])
        try session.setMode(AVAudioSession.Mode.voiceChat)
    } catch (let error) {
        print("Error while configuring audio session: \(error)")
    }
}

Если бы кто-нибудь мог указать мне правильное направление, я был бы признателен.

РЕДАКТИРОВАТЬ: У меня есть фоновый режим для аудио включен.

1 Ответ

1 голос
/ 24 мая 2019

Немного перекинул структуру, и теперь она работает. Я не совсем уверен, что изменило мысль. Если люди сталкиваются с той же проблемой. - Убедитесь, что вы держите сильную ссылку на аудиоплеер. - Убедитесь, что режим находится в режиме .playback или .playAndRecord

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...