SwiftUIでコントロールセンター/イヤホンで音声の再生/停止/スキップをできるようにする方法を説明する。
結論
MPRemoteCommandを設定する。
具体例
コントロールセンター/イヤホンで音声の再生/停止/スキップをできるAppを作成する。
App起動時の画面
このときはイヤホンで音声の再生/停止/スキップができる。
コントロールセンターを表示させると、コントロールセンターでもイヤホンでも音声の再生/停止/スキップができる。
コード
- AVAudioPlayerとMPRemoteCommandCenterを記述するためのclassを定義する。
- AVAudioPlayerを定義する。
- 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
}
}
}
公式 : MPRemoteCommandcenter、MPRemoteCommand
まとめ
SwiftUIでコントロールセンター/イヤホンで音声の再生/停止/スキップをできるようにする方法を説明した。
コメント