AVFoundation 을 사용하는 것이 가장 좋습니다 . 시청각 미디어 작업에 필요한 모든 필수 요소를 제공합니다.
업데이트 : 의견 중 일부에서 제안한대로 Swift 2 , Swift 3 및 Swift 4 와 호환됩니다 .
스위프트 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)
}
}
스위프트 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)
}
}
스위프트 4 (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)
}
}
곡명과 확장명을 반드시 변경하십시오 .
파일을 올바르게 가져와야합니다 ( Project Build Phases
> Copy Bundle Resources
). 당신은에 배치 할 수 있습니다 assets.xcassets
더 큰 편의를 위해.
짧은 사운드 파일의 경우 압축되지 않은 오디오 형식 (예 : .wav
최상의 품질 및 낮은 CPU 영향)을 원할 수 있습니다 . 짧은 사운드 파일에는 디스크 공간이 많이 소모 되어도 큰 문제가되지 않습니다. 파일이 길수록 압축 형식 등의 압축 형식을 원할 수 있습니다 .mp3
. pp 호환되는 오디오 형식 을 확인하십시오 CoreAudio
.
재미있는 사실 : 소리를 훨씬 쉽게 연주 할 수있는 깔끔한 작은 라이브러리가 있습니다. :)
예 : SwiftySound