【SwiftUI】AVAudioPlayerを使用して音楽を再生


概要

SwiftUIにて音(mp3)を鳴らす

流れ

① : 音(MP3ファイル)を用意する
② : 音をXCodeに追加する
③ : Swiftファイル(SoundPlayer.swift)を作成 → 音の読み込みを行う
④ : ContentView.swiftにコードを追加
⑤ : 実行

② : 音をXCodeに追加する

用意した音を「Assets.xcassets」へドラッグ&ドロップ

③ : Swiftファイル(SoundPlayer.swift)を作成 → 音の読み込みを行う

  1. フォルダ一覧にて右クリック
  2. 「NewFile」を選択
  3. 「Swift File」を選択 ※ 「SwiftUI View」ではない
  4. 名前を決めて保存
  5. コードを追加

SoundPlayer.swift
import UIKit
import AVFoundation

class SoundPlayer: NSObject {

    let music_data=NSDataAsset(name: "music")!.data   // 音源の指定
    var music_player:AVAudioPlayer!

    // 音楽を再生
    func musicPlayer(){

        do{
            music_player=try AVAudioPlayer(data:music_data)   // 音楽を指定
            music_player.play()   // 音楽再生
        }catch{
            print("エラー発生.音を流せません")
        }

    }

    // 音楽を停止
    func stopAllMusic (){
        music_player?.stop()
    }
}

④ : ContentView.swiftにコードを追加

ContentView.swift
import SwiftUI

struct ContentView: View {

    let musicplayer = SoundPlayer()   // インスタンス化
    var body: some View {

        // ボタン
        Button(action:{

            // 音を再生
            musicplayer.musicPlayer()

        }){

            // ボタンのデザイン
            Text("MUSIC")
                .padding(60)
                .background(Color.red)
                .foregroundColor(Color.white)
                .cornerRadius(40)
        }

    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

⑤ : 実行

ボタンを押すと音が鳴ることを確認