Implementar a lógica “Reproduzir toque”
Precisamos de um método que pause o fluxo de áudio do Vonage e inicie o reprodutor de áudio padrão do iOS.
Como o sistema de áudio do iPhone é um singleton global, não podemos reproduzir um toque e o fluxo do Vonage simultaneamente sem que ocorram artefatos de áudio. Portanto, interrompemos a captura/reprodução do áudio do Vonage antes de reproduzir o toque.
Adicione este método ao seu AudioDeviceRingtone classe:
func playRingtone(from url: URL) {
// 1. Pause audio
// These methods stop the Vonage audio unit from accessing the hardware
_ = stopCapture()
_ = stopRendering()
// 2. Stop & replace existing audio player
if let player = audioPlayer {
player.stop()
audioPlayer = nil
}
// 3. Initialize the AVAudioPlayer
do {
audioPlayer = try AVAudioPlayer(contentsOf: url)
audioPlayer?.delegate = self
// Loop indefinitely
audioPlayer?.numberOfLoops = -1
// 4. Setup Vibration Timer
if vibratesWithRingtone {
vibrateTimer = Timer.scheduledTimer(timeInterval: vibrateFrequencySeconds,
target: self,
selector: #selector(buzz(_:)),
userInfo: nil,
repeats: true)
}
// 5. Play the audio
audioPlayer?.play()
} catch {
print("Ringtone audio player initialization failure \(error)")
audioPlayer = nil
}
}
Driver de áudio personalizado
Aprenda a usar um driver de áudio personalizado para personalizar o áudio dos fluxos do emissor e do assinante. Você utilizará o driver de áudio personalizado quando quiser iniciar e interromper a reprodução de seu próprio arquivo de áudio, bem como realizar qualquer ação que não faça parte do comportamento padrão do chat de vídeo ao vivo fornecido pelo SDK.