Play Audio when device in silent mode - ios swift Play Audio when device in silent mode - ios swift ios ios

Play Audio when device in silent mode - ios swift


Put this line before calling play() method of AVPlayer.

In Objective C

[[AVAudioSession sharedInstance]            setCategory: AVAudioSessionCategoryPlayback                  error: nil];

In Swift

do {    try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback) } catch {    // report for an error }

Swift 5

do {      try AVAudioSession.sharedInstance().setCategory(.playback)   } catch(let error) {       print(error.localizedDescription)   }


You can use AppDelegate class.

For enable sound (for audio or video) when device is in silent mode use AVAudioSessionCategoryPlayback:

func applicationDidBecomeActive(_ application: UIApplication) {    do {        try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)    } catch {        print("AVAudioSessionCategoryPlayback not work")    }}

For disable sound when device is in silent mode (for example when we answer the phone call) use AVAudioSessionCategorySoloAmbient:

func applicationWillResignActive(_ application: UIApplication) {    do {        try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategorySoloAmbient)    } catch {        print("AVAudioSessionCategorySoloAmbient not work")    }}


Swift 3.0 and Xcode > 8

Play sound in Video when device is on RINGER mode and SLIENT mode

 do {        try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)        //print("AVAudioSession Category Playback OK")        do {            try AVAudioSession.sharedInstance().setActive(true)            //print("AVAudioSession is Active")        } catch _ as NSError {            //print(error.localizedDescription)        }    } catch _ as NSError {        //print(error.localizedDescription)    }