How can I detect whether an iOS device is in silent mode or not?
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 switchAVAudioSessionCategoryPlayBack: Your Audio continues with the Silent
switch set to silent or when the screen locks
Detect silent mode in iOS 7
Check this thread - Detecting the iPhone's Ring / Silent / Mute switch using AVAudioPlayer not working?
And this API - SoundSwitch
How it works:
- Play an audio file of 0.5 secs, every sec (after completion..)
- Check how long it took to play the sound
- Callback called real fast? nothing was played (silent switch is ON)
Enjoy!
Related Topics
How to Hide a Status Bar in Ios
Resize Uiimage With Aspect Ratio
How to Determine the Os Version At Runtime in Os X or iOS (Without Using Gestalt)
Uinavigationbar Hide Back Button Text
How to Determine If an Annotation Is Inside of Mkpolygonview (Ios)
Closure Cannot Implicitly Capture a Mutating Self Parameter
Sharing Data in Between Apps in Ios
How to Detect Collision in Swift, Sprite Kit
Uitableview Cell Selected Color
Iphone Smooth Sketch Drawing Algorithm
String Replacement in Objective-C
How to Turn Page Programmatically in Uipageviewcontroller
Delete Keychain Items When an App Is Uninstalled
Proper Use of Beginbackgroundtaskwithexpirationhandler
Ios 6: How to Restrict Some Views to Portrait and Allow Others to Rotate