根据 AudioServicesPlaySystemSoundWithCompletion
的文档的介绍。应该是跟随系统的音量的。写出如下代码:
guard let fileUrl = Bundle.main.url(forResource: assetName, withExtension: "caf") else{
log.error("sound \(rawValue) not found")
return nil
}
var soundId:SystemSoundID = 0
let osStatus = AudioServicesCreateSystemSoundID(fileUrl as NSURL, &soundId)
if osStatus == kAudioServicesNoError{
AudioServicesPlaySystemSoundWithCompletion(soundId) {
log.info("\(self) play completed")
}
}
但是实际测试下来在 iOS 11 上的表现并没有跟随。静音上是有跟随。
给人感觉一般控制音量控制的是扬声器的音量,但是上面的播放代码播放的是跟随系统的铃声音量。
后面改为使用 AVAudioPlayer
来播放即可。
AVAudioPlayer
中的音量默认是 1.0
它中系统音量的关系是。
最终播放的音量是 AVAudioPlayer.volume * systemVolume
网友评论