2015-09-20 10 views
9

In iOS 9 (Xcode 7, Swift 2.0) Sto cercando di riprodurre un suono in modalità silenziosa utilizzando il seguente codice:Riproduci suono su iOS 9 in modalità silenziosa

try! AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, withOptions: .MixWithOthers) 
try! AVAudioSession.sharedInstance().setActive(true) 
AudioServicesPlayAlertSound(1005) 

Secondo altre risposte e Apple documentazione ho pensato che questo dovrebbe funzionare ma non suona un suono su iOS 9 quando in modalità silenziosa. Lo riproduce quando non è in modalità silenziosa. Da Apple doc:

AVAudioSessionCategoryPlayback - Solo riproduzione. Riproduce l'audio anche con lo schermo bloccato e con l'interruttore Suoneria/Silenzioso impostato su Silenzioso. Utilizzare questa categoria per un'app la cui riproduzione audio è di primaria importanza.

Mi manca qualcosa qui o c'è un altro/nuovo modo per farlo funzionare?

+3

Spero che non funziona. Se metto il telefono in modalità silenziosa, non voglio che le app producano suoni. Questo è il punto della modalità silenziosa. – rmaddy

+2

Dal documento di Apple dovrebbe essere possibile. E lo sto usando per un'app timer, nel qual caso dovrebbe suonare anche quando il telefono è in modalità silenziosa perché è di primaria importanza. – lammert

+0

@lammert troveresti qualcosa di simile? Si prega di suggerirmi come funziona in iOS 8 e versioni successive appositamente per la modalità silenziosa – Abha

risposta

4

Questo è il mio codice:

do { 
    try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, withOptions: AVAudioSessionCategoryOptions.MixWithOthers) 
    } 
catch { 
     // report for an error 
    } 

AudioPlayer.play() 

Funziona sul mio iPhone.

Buona fortuna!

+1

Ottimo! Funziona anche su iOS10! – demonofthemist

+0

Il suono continua a suonare per me. Non funziona. – user3427013

+0

@ user3427013 questo codice non dovrebbe riprodurre il suono? se vuoi fermarti, esegui 'AudioPlayer.stop()' –

0

per SWIFT 3.2:

do { 
     try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: AVAudioSessionCategoryOptions.duckOthers) 
    } 
    catch { 
     // report for an error 
    } 
Problemi correlati