AVFoundationを使用することをお勧めします。それは視聴覚メディアを扱うためのすべての必需品を提供します。
更新:一部のコメントで提案されているように、Swift 2、Swift 3、Swift 4と互換性があります。
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)
}
}
スウィフト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(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
etc。などの圧縮形式を使用することをお勧めします。pp。の互換性のあるオーディオ形式を確認してくださいCoreAudio
。
豆知識:サウンドの再生をさらに簡単にする、きちんとした小さなライブラリがあります。:)
例:SwiftySound