Я пытаюсь реализовать 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)")
}
}
Если бы кто-нибудь мог указать мне правильное направление, я был бы признателен.
РЕДАКТИРОВАТЬ: У меня есть фоновый режим для аудио включен.