Implementierung der "Klingelton abspielen"-Logik
Wir brauchen eine Methode, die den Vonage-Audiostream pausiert und den Standard-iOS-Audioplayer startet.
Da das iPhone-Audiosystem ein globales Singleton ist, können wir nicht gleichzeitig einen Klingelton und den Vonage-Stream abspielen, ohne dass Audio-Artefakte entstehen. Daher beenden wir die Erfassung/Wiedergabe von Vonage-Audio vor der Wiedergabe des Klingeltons.
Fügen Sie diese Methode zu Ihrer AudioDeviceRingtone Klasse:
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
}
}
Benutzerdefinierter Audiotreiber
Hier erfahren Sie, wie Sie einen benutzerdefinierten Audiotreiber verwenden, um den Audio-Stream des Herausgebers und der Teilnehmer anzupassen. Sie werden den benutzerdefinierten Audiotreiber verwenden, wenn Sie die Audio-Wiedergabe Ihrer eigenen Audiodatei starten und stoppen und alles tun möchten, was über das Standardverhalten des vom SDK bereitgestellten Live-Video-Chats hinausgeht.