【Swift】ボタンが押された時に音楽ファイルを再生する方法

この記事では、Swiftでボタンが押された時に音楽ファイルを再生する方法について解説しています。

僕はこれまでクイズアプリで正解・不正解の音を出したり、単語帳アプリで単語の発音を出す時に使いました。

準備

まずは、プロジェクト内に再生したい音楽ファイルを追加しておきます。

今回はサンプルなので保存先は適当ですが、複数の音楽ファイルがある場合は1つフォルダを作ってその中に管理した方が良いでしょう。

また、音楽ファイルをAsset catalog内で管理する場合は、再生方法がこれから紹介するものとは異なります。もしそちらの方法が知りたい方は以下の記事をお読みください。



音楽ファイルの再生方法

音楽ファイルを再生する流れは次のようになります。

  1. AVFoundationのインポート
  2. AVAudioPlayerDelegateの追加
  3. 音楽ファイルのURLを取得
  4. 音楽ファイルを再生するプレイヤーを生成
  5. デリゲートの設定
  6. 音楽ファイルを再生
import UIKit
import AVFoundation // ① AVFoundationをインポート 

class ViewController: UIViewController {
    
    // AVAudioPlayerのインスタンス宣言
    var audioPlayer:AVAudioPlayer!    
    
    override func viewDidLoad() {
        super.viewDidLoad()
    }
        
    // 再生ボタンが押されたら実行
    @IBAction func playButtonPressed(_ sender: UIButton) {
      playSound(name: "sample")
    }
}

//MARK:- AVAudioPlayerDelegate
extension ViewController: AVAudioPlayerDelegate {  // ② AVAudioPlayerDelegateの追加

  func playSound(name: String){

    // ③ 音楽ファイルのURLを取得。なければ処理を中断
    guard let soundURL = Bundle.main.url(forResource: "sample", withExtension: "mp3") else {
      print("Not Found")
      return 
    }

    // ④ プレイヤーの生成
    audioPlayer = try! AVAudioPlayer(contentsOf: soundURL)

    // ⑤ デリゲートの設定
    audioPlayer.delegate = self

    // ⑥ 再生
     audioPlayer.play()    
  }
}

以上で、実際にシミュレーターを立ち上げて、あらかボタンをクリックすると、sample.mp3が再生されます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA