I've been looking for hours and I can't seem to find any API that explains how to detect whether an iPhone ringer is in silent mode or not. This is what I'm talking about:
Is there anyway I can find out whether an iOS device's silent mode is on or off using Swift code? I'm specifically looking for iOS8 and up since the iOS5 ones have been deprecated. Thanks.
解决方案
I don't think there is and you probably don't need to directly call an API to detect if the device is muted or not. What you need to know is this:
When playing a sound, you will do something like:
try AVAudioSession.sharedInstance().setCategory({AVAudioSessionCategory})
try AVAudioSession.sharedInstance().setActive(true)
audioPlayer = try AVAudioPlayer(contentsOfURL: alertSound)
audioPlayer.prepareToPlay()
audioPlayer.play()
In the {AVAudioSessionCategory}, you can specify:
AVAudioSessionCategorySoloAmbient: Your audio is silenced by screen
locking and by the Silent switch
AVAudioSessionCategoryPlayBack: Your Audio continues with the Silent
switch set to silent or when the screen locks