ios – Swift: Play SystemSounds while device is muted


I am building a navigation App that should get audio notifications in some events. Currently, I am playing Audio by calling a Sound Manager I have written:

SoundManager.playSound(forSystemID: systemSoundIDs.newAlert.rawValue)

This is my SoundManager:

import Foundation
import AVFoundation

struct SoundManager {
    static func playSound(forSystemID: SystemSoundID) {
        // Play a sound
        let audioSession = AVAudioSession.sharedInstance()
        
        do {
            try audioSession.setCategory(.playback, mode: .default, options: .mixWithOthers)
            try audioSession.setActive(true, options: [])
            
            AudioServicesPlayAlertSound(forSystemID)
        } catch {
            LogManager.logToFile("Error playing requested System Sound!")
        }
    }
}

This works, the sound and the haptic feedback play. However, it only plays when the device is unmuted, which is an issue for this use. I have tried many things but nothing seems to change the fact that it only plays when the device is unmuted. I am starting to think that it is impossible to play the sounds regardless of the device’s mute state when using SystemSoundIDs. The issue is that I cannot use the URL because I don’t know how to find it. I have gone trough hundreds of systems and have found ID’s that fit what I was looking for, I do not know their names or the url…

TLDR: How do I play SystemSounds using AVAudioSession regardless of the devices mute state?

Latest articles

spot_imgspot_img

Related articles

Leave a reply

Please enter your comment!
Please enter your name here

spot_imgspot_img