De préférence, vous pouvez utiliser AVFoundation . Il fournit tous les éléments essentiels pour travailler avec les médias audiovisuels.
Mise à jour: Compatible avec Swift 2 , Swift 3 et Swift 4 comme suggéré par certains d'entre vous dans les commentaires.
Swift 2.3
import AVFoundation
var player: AVAudioPlayer?
func playSound() {
let url = NSBundle.mainBundle().URLForResource("soundName", withExtension: "mp3")!
do {
player = try AVAudioPlayer(contentsOfURL: url)
guard let player = player else { return }
player.prepareToPlay()
player.play()
} catch let error as NSError {
print(error.description)
}
}
Swift 3
import AVFoundation
var player: AVAudioPlayer?
func playSound() {
guard let url = Bundle.main.url(forResource: "soundName", withExtension: "mp3") else { return }
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
try AVAudioSession.sharedInstance().setActive(true)
let player = try AVAudioPlayer(contentsOf: url)
player.play()
} catch let error {
print(error.localizedDescription)
}
}
Swift 4 (compatible iOS 13)
import AVFoundation
var player: AVAudioPlayer?
func playSound() {
guard let url = Bundle.main.url(forResource: "soundName", withExtension: "mp3") else { return }
do {
try AVAudioSession.sharedInstance().setCategory(.playback, mode: .default)
try AVAudioSession.sharedInstance().setActive(true)
/* The following line is required for the player to work on iOS 11. Change the file type accordingly*/
player = try AVAudioPlayer(contentsOf: url, fileTypeHint: AVFileType.mp3.rawValue)
/* iOS 10 and earlier require the following line:
player = try AVAudioPlayer(contentsOf: url, fileTypeHint: AVFileTypeMPEGLayer3) */
guard let player = player else { return }
player.play()
} catch let error {
print(error.localizedDescription)
}
}
Assurez-vous de changer le nom de votre morceau ainsi que l' extension .
Le fichier doit être correctement importé ( Project Build Phases
> Copy Bundle Resources
). Vous voudrez peut-être le placer assets.xcassets
pour plus de commodité.
Pour les fichiers son courts, vous voudrez peut-être opter pour des formats audio non compressés, par exemple, .wav
car ils ont la meilleure qualité et un faible impact sur le processeur. La consommation d'espace disque plus élevée ne devrait pas être un problème pour les fichiers son courts. Plus les fichiers sont longs, vous voudrez peut-être opter pour un format compressé tel que .mp3
etc. pp. Vérifiez les formats audio compatibles de CoreAudio
.
Fait amusant: il existe de jolies petites bibliothèques qui facilitent encore plus la lecture des sons. :)
Par exemple: SwiftySound