目次
概要
ただ音を鳴らすだけ。しかし、システム系の開発をおこなっていると、音を出すという機能は意外と作ることが少ない。
なので、すぐ取り出せるようにメモ。
アプリをより華やかにするのに役立つと思う。
ソースコード
import SwiftUI
@main
struct TestApp: App {
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
var body: some Scene {
WindowGroup {
PlaySoundView()
}
}
}
画面表示部分
import SwiftUI
struct PlaySoundView: View {
@ObservedObject var viewModel: PlaySoundViewModel = PlaySoundViewModel()
var body: some View {
HStack {
Spacer()
Button {
self.viewModel.playSoundDingdong()
} label: {
Image(systemName: "circle")
.foregroundColor(Color.blue)
.font(.system(size: 80))
}
Spacer()
Button {
self.viewModel.playSoundFailure()
} label: {
Image(systemName: "multiply")
.foregroundColor(Color.red)
.font(.system(size: 80))
}
Spacer()
}
}
}
処理部分
import AVFoundation
import UIKit
import Foundation
class PlaySoundViewModel: NSObject, ObservableObject {
private var soundPlayer: AVAudioPlayer?
func playSoundDingdong() {
guard let data = NSDataAsset(name: "Dingdong")?.data else {
return
}
do {
soundPlayer = try AVAudioPlayer(data: data)
soundPlayer?.prepareToPlay()
soundPlayer?.play()
} catch {
print("error")
}
}
func playSoundFailure() {
guard let data = NSDataAsset(name: "Failure")?.data else {
return
}
do {
soundPlayer = try AVAudioPlayer(data: data)
soundPlayer?.prepareToPlay()
soundPlayer?.play()
} catch {
print("error")
}
}
}
音源の管理
今回はコードだけでは無く、ちゃんと音声データも追加しないといけない。
追加する場所はAssets.xcassetsの部分。
まずはAssets.xcassetsを選択して、「+ボタンをタップ -> Data Set」を選択する。
名前を設定した後、+と書かれている枠に音声ファイル(.mp3など)をドラッグアンドドロップする。
同じように他のファイルも追加する。
こんな感じになる。
デモ動画
詳細
今回は単純に音声の再生なので、細かい処理は省いている。
音楽を再生、録音データを再生する記事の時はちゃんと書いていこうと思う。
また、メソッド内でAVAudioPlayerのオブジェクトを生成すると音源が再生されないので注意。