Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I detect whether an iOS device is in silent mode or not?

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:

iPhone Ringer Switch

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.

like image 790
BunkBedNoob Avatar asked Feb 09 '16 05:02

BunkBedNoob


1 Answers

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

like image 88
Guy Daher Avatar answered Oct 24 '22 18:10

Guy Daher