この記事によると、iOSはアプリから端末の音量を操作できないようになっているそうだ。
しかし、StackOverflowを参考にすると、無理やりではあるが、音量を変更できるそうだ。その方法と注意点を紹介する。
- Swift 5
- Version 15.3
- iOS17.3で動作確認
さっそく、そのコードを見てほしい。
コード
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.1) { //(1)
slider?.value = volume
}
}
}
このように、MPVolumeViewを拡張して、
使い方
MPVolumeView.setVolume(0.6)//(2)
このように使うだけである。
- (1) +0.1としているのがミソで、slider?.value = volumeとするのを少し遅らせることで音量を変更できる。
- (2) 0.6としているところは、音量を表す。音量は0.0〜1.0の範囲で指定でき、値が大きいほど音量も大きくなる。
※この方法は、制限を強行突破しているため、いつ動かなくなってもおかしくないです。
参考