You can change the Device sound level using the MediaPlayer
. Setting the Slider of MPVoulumeView()
will do the job.
Its really easy if you use the extension provided here: https://stackoverflow.com/a/57449875/12233264
import MediaPlayer
extension MPVolumeView {
static func setVolume(_ volume: Float) -> Void {
let volumeView = MPVolumeView()
let slider = volumeView.subviews.first(where: { $0 is UISlider }) as? UISlider
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.01) {
slider?.value = volume
}
}
}
Using it in SwiftUI:
import SwiftUI
struct ContentView: View {
@State private var soundLevel: Float = 0.5
var body: some View {
Slider(value: $soundLevel, in: 0...1,step: 0.0625, onEditingChanged: { data in
MPVolumeView.setVolume(self.soundLevel)
})
}
}