개발 창고/iOS
[SwiftUI] How to Use "Ringtone"
로이제로
2023. 11. 27. 22:00
반응형
How to Use "Ringtone"
이 글은 Asset에 음원 파일을 접근하여 재생하는 방법에 대해 알아봅니다.
1. Asset 추가
Project의 Target에서 Assets을 클릭하면 아래와 같이 Asset을 관리하는 화면이 나옵니다. 여기에서 원하는 mp3파일을 추가해 줍니다.
2. doRingtone
/**
* @description 벨소리 실행
*/
func playRingtone () {
let assetName = "time_alarm"
guard let audioData = NSDataAsset(name: assetName)?.data else {
fatalError("Unable to find asset \(assetName)")
}
do {
var player = try AVAudioPlayer(data: audioData)
player!.play()
} catch {
fatalError(error.localizedDescription)
}
}
AVAudioPlay를 이용하기 위해서는 AVFoundation을 import 해주어야 합니다.
assetName에 내 mp3파일 명(확장자 제외)을 입력해 주고 위와 같이 NSDataSet으로 불러온 후 AVAudioPlayer로 선언합니다.
이후 play()로 재생해 주면, 해당 mp3 파일이 재생되게 됩니다.
추가적으로 재생 중인지 여부는 player!.isPlaying
재생 중지는 player!.stop()
으로 제어 가능합니다.
때문에, player를 전역변수로 두고 필요시마다 재생 / 중지를 가능하게 됩니다.
@State private var player: AVAudioPlayer? // 벨소리 플레이어
/**
* @description 벨소리 재생
*/
func playRingtone () {
let assetName = "time_alarm"
guard let audioData = NSDataAsset(name: assetName)?.data else {
fatalError("Unable to find asset \(assetName)")
}
do {
var player = try AVAudioPlayer(data: audioData)
player!.play()
} catch {
fatalError(error.localizedDescription)
}
}
/**
* @description 벨소리 중지
*/
func stopRingtone () {
if(player!.isPlaying){
player!.stop()
}
}
반응형