Te voy a enseñar cómo reproducir sonidos en iOS con Swift
Alguna vez lo has pensado, lo sé.
Que al pulsar cualquier botoncillo de tu App, este reproduzca un sonido.
O quizá al cargar una vista, o al guardar un dato, no sé, el sonido es una parte importante en una App.
AVAudioPlayer
Esta es la clase que necesitamos para reproducir archivos de sonido que tengamos en nuestro proyecto.
Si queremos reproducir sonidos en iOS con Swift de cualquier tipo, y también de cualquier duración, sin duda esta es nuestra clase.
Apple recomienda esta clase entre otras cosas para:
- Reproducir sonidos de cualquier duración
- Reproducir archivo locales o en buffer de memoria
- Reproducir varios sonidos de forma simultánea, uno en cada Audio Player
AVFoundation
Para trabajar con la clase AVAudioPlayer necesitamos importar a nuestra clase el Framework AVFoundation.
import AVFoundation
Una vez importando, deberemos declarar una variable de tipo AVAudioPlayer.
var player = AVAudioPlayer ()
Implementar en un método
En este ejemplo te voy a enseñar a reproducir un sonido cuándo al pulsar un botón se ejecute un método.
Sin embargo, puedes usar este código en la finalización de cualquier algoritmo para que se reproduzca un sonido en tiempo de ejecución.
Este sería el método que deberíamos crear e implementar en nuestro controlador:
//MÉTODO QUE REPRODUCE UN SONIDO
func playSound (sender:UIButton){
//SELECCIONAMOS EL SONIDO DE NUESTRO GRUPO DE CARPETAS Y ARCHIVOS Y LO ALMACENAMOS EN UNA VARIABLE LLAMADA SOUND
var sound = NSURL (fileURLWithPath: NSBundle.mainBundle().pathForResource(«problem», ofType: «mp3»)!)
//CREAMOS UNA VARIABLE PARA GESTIONA ERRORES
var error = NSError?()
//USAMOS LA VARIABLE CREADA ANTERIORMENTE DE TIPO AVAudioPlayer Y LE PASAMOS EL ARCHIVO RECOGIDO EN LA VARIABLE SOUND
player = AVAudioPlayer (contentsOfURL: sound, error: &error)
//PREPARAMOS EL REPRODUCTOR PARA EMITIR SONIDO
player.prepareToPlay()
//REPRODUCE EL ARCHIVO
player.play()
}
Sonido activado
Es importante que sepáis que el sonido se escuchará si el usuario tiene su teléfono con sonido, si lo tiene silenciado, el sonido no se escuchará.
AudioServicesCreateSystemSoundID
Disponemos de otra forma de reproducir sonidos en iOS con Swift.
Apple recomienda usar AudioServicesCreateSystemSoundID en los siguientes casos:
- Reproducir sonidos de una duración de 30 segundos o menos
- Reproducir un único archivo de sonido
Si queremos usar esta otra opción para reproducir sonidos, deberíamos crear e implementar un método como este:
//MÉTODO QUE REPRODUCE UN SONIDO DE MENOS DE 30 SEGUNDOS
@IBAction func playSoundTwo(sender: AnyObject) {
//SELECCIONAMOS EL SONIDO DE NUESTRO PROYECTO LOCAL
var filePath = NSBundle.mainBundle().pathForResource(«sound», ofType: «caf»)
//ALMACENAMOS EL SONIDO EN UNA VARIABLE DE TIPO NSURL
var fileURL = NSURL(fileURLWithPath: filePath!)
//CREAMOS UNA VARIABLE QUE INDIQUE EL TIPO DE SONIDO
var soundID:SystemSoundID = 0
//REPRODUCIMOS EL SONIDO
AudioServicesCreateSystemSoundID(fileURL, &soundID)
AudioServicesPlaySystemSound(soundID)
}
Cómo ves, reproducir sonidos en iOS con Swift es bastante sencillo.
Puedes usar cualquiera de estas dos formas para hacerlo.
Aquí te dejo un ejemplo de lo que hemos visto, para que lo descargues y le eches un vistazo.
Y si tienes cualquier duda, déjame un comentario.
9 Comments