web-dev-qa-db-fra.com

Écouter de la musique en mode silencieux - ios swift

Je crée une application utilisant xcode 7.1, Swift. Je veux jouer un audio. Tout va bien. Maintenant, mon problème, je veux entendre du son lorsque le périphérique en mode silencieux ou en sourdine. Comment puis-je le faire?

J'utilise le code suivant pour lire de l'audio

currentAudio!.stop()
            currentAudio = try? AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("sample_audio", ofType: "mp3")!));

            currentAudio!.currentTime = 0

            currentAudio!.play();
20
Amsheer

Mettez cette ligne avant d'appeler play () method of AVPlayer.

En Objectif C

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

En rapide

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

Swift 3.0 et Xcode> 8

Reproduire le son en vidéo lorsque l'appareil est en mode RINGER et en mode SLIENT 

 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)
    }
5
Saumil Shah

Swift 4

utiliser cette ligne avant de jouer la vidéo

try? AVAudioSession.sharedInstance().setCategory(.playback, mode: .default, options: [])
4
faraz khonsari

Swift 4.2

   do {
        try AVAudioSession.sharedInstance().setCategory(.playback, mode: .default, options: [])
    } catch let error {
        print("Error in AVAudio Session\(error.localizedDescription)")
    }
1
Yogendra Singh

Vous pouvez passer par là, ça va vous aider

Lorsque vous utilisez les catégories de session audio suivantes, les sons ne seront pas désactivés sur iOS: AVAudioSessionCategoryPlayback,AVAudioSessionCategoryRecord,AVAudioSessionCategoryPlayAndRecord

Exemple

func playSound (Sound: String, Type: String) {

        //Prepare the sound file name & extension
        var alertSound = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource(Sound, ofType: Type)!)

        //Preparation to play
        AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: nil)
        AVAudioSession.sharedInstance().setActive(true, error: nil)

        //Play audio

        var error: NSError?
        audioPlayer = AVAudioPlayer(contentsOfURL: alertSound, error: &error)
        audioPlayer.prepareToPlay()
        audioPlayer.play()
        }
0
Moin Shirazi

Vous pouvez utiliser la classe AppDelegate.

Pour activer le son (audio ou vidéo) lorsque l'appareil est en mode silencieux, utilisez AVAudioSessionCategoryPlayback :

func applicationDidBecomeActive(_ application: UIApplication) {

    do {
        try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
    } catch {
        print("AVAudioSessionCategoryPlayback not work")
    }
}

Pour désactiver le son lorsque l'appareil est en mode silencieux (par exemple, lorsque nous répondons au téléphone), utilisez AVAudioSessionCategorySoloAmbient : 

func applicationWillResignActive(_ application: UIApplication) {

    do {
        try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategorySoloAmbient)
    } catch {
        print("AVAudioSessionCategorySoloAmbient not work")
    }
}
0
maxwell