Mise en œuvre de la logique "Play Ringtone" (Jouer une sonnerie)
Nous avons besoin d'une méthode qui mette en pause le flux audio de Vonage et démarre le lecteur audio standard d'iOS.
Le système audio de l'iPhone étant un singleton global, nous ne pouvons pas jouer une sonnerie et le flux Vonage simultanément sans artefacts audio. Par conséquent, nous arrêtons la capture/le rendu de l'audio Vonage avant de jouer la sonnerie.
Ajoutez cette méthode à votre 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
}
}
Pilote audio personnalisé
Apprenez à utiliser un pilote audio personnalisé pour personnaliser le flux audio de l'éditeur et de l'abonné. Vous utiliserez le pilote audio personnalisé lorsque vous voudrez démarrer et arrêter l'audio, lire votre propre fichier audio et faire quoi que ce soit en dehors du comportement par défaut du chat vidéo en direct fourni par le SDK.