SwiftUI | コントロールセンター/イヤホンで音声の再生/停止/スキップをできるようにする方法

音声・動画

SwiftUIでコントロールセンター/イヤホンで音声の再生/停止/スキップをできるようにする方法を説明する。

結論

MPRemoteCommandを設定する。

具体例

コントロールセンター/イヤホンで音声の再生/停止/スキップをできるAppを作成する。

App起動時の画面

このときはイヤホンで音声の再生/停止/スキップができる。

コントロールセンターを表示させると、コントロールセンターでもイヤホンでも音声の再生/停止/スキップができる。

コード

  1. AVAudioPlayerとMPRemoteCommandCenterを記述するためのclassを定義する。
  2. AVAudioPlayerを定義する。
  3. MPRemoteCommandCenterの設定を行う。
import SwiftUI
import AVFoundation
import MediaPlayer

struct ContentView: View {
    var body: some View {
        let プレイヤークラス = playerClass()
        Button("音声を再生") {
            プレイヤークラス.プレイヤー.play()
        }
        .buttonStyle(.borderedProminent)
    }
}


class playerClass {                                                   // ? 1
    var プレイヤー: AVAudioPlayer
    init() {
        let ファイルURL = Bundle.main.url(forResource: "test",
                                         withExtension: "mp3")!
        プレイヤー = try! AVAudioPlayer(contentsOf: ファイルURL)         // ? 2
        setMPRemoteCommandCenter()
    }
    
    func setMPRemoteCommandCenter() {                                 // ? 3
        // Get the shared command center.
        let commandCenter = MPRemoteCommandCenter.shared()
        
        // 再生/停止/次に進む/前に戻るコマンド
        commandCenter.playCommand.addTarget { [unowned self] event in
            print("play")
            プレイヤー.play()
            return .success
        }
        commandCenter.pauseCommand.addTarget { [unowned self] event in
            print("pause")
            プレイヤー.pause()
            return .success
        }
        commandCenter.nextTrackCommand.addTarget{ [unowned self] event in
            print("next")
            // ここに次の曲に進む処理を記述
            return .success
        }
        commandCenter.previousTrackCommand.addTarget{ [unowned self] event in
            print("previous")
            // ここに前の曲に戻る処理を記述
            return .success
        }
    }
    
}

公式 : MPRemoteCommandcenterMPRemoteCommand

まとめ

SwiftUIでコントロールセンター/イヤホンで音声の再生/停止/スキップをできるようにする方法を説明した。

コメント

タイトルとURLをコピーしました