2015-09-20 16 views
9

W iOS 9 (Xcode 7 Swift 2.0) Próbuję odtworzyć dźwięk w trybie cichym przy użyciu następującego kodu:Odtwarzanie dźwięku na iOS 9 w trybie cichym

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

Według innych odpowiedzi i Apple dokumentacja Myślałem, że to powinno działać, ale nie odtwarza dźwięku w systemie iOS 9 w trybie cichym. Odtwarza go, gdy nie jest w trybie cichym. Z dokumentu firmy Apple:

AVAudioSessionCategoryPlayback - tylko odtwarzanie. Odtwarza dźwięk nawet, gdy ekran jest zablokowany, a przełącznik Ring/Silent jest wyciszony. Użyj tej kategorii dla aplikacji, której odtwarzanie dźwięku ma pierwszorzędne znaczenie.

Czy brakuje mi czegoś tutaj, czy istnieje inny/nowy sposób, aby to zadziałało?

+3

Mam nadzieję, że to nie działa. Jeśli przełączę telefon w tryb cichy, nie chcę, aby aplikacje generowały dźwięki. To jest punkt cichego trybu. – rmaddy

+2

Od docenta Apple'a powinno być to możliwe. Używam go do aplikacji z zegarem, w którym to przypadku powinien grać nawet wtedy, gdy telefon jest w trybie cichym, ponieważ ma to pierwszorzędne znaczenie. – lammert

+0

@lammert znalazłbyś coś na ten temat? Proszę zasugerować mi, jak to działa w ios 8 i później specjalnie dla trybu cichego. – Abha

Odpowiedz

4

To jest mój kod:

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

AudioPlayer.play() 

To działa na moim iPhone.

Powodzenia!

+1

Świetnie! Działa to również w iOS10! – demonofthemist

+0

Dźwięk odtwarza się dla mnie. Nie działa. – user3427013

+0

@ user3427013 czy ten kod nie powinien odtwarzać dźwięku? jeśli chcesz się zatrzymać, wykonaj 'AudioPlayer.stop()' –

0

Dla Swift 3.2:

do { 
     try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, with: AVAudioSessionCategoryOptions.duckOthers) 
    } 
    catch { 
     // report for an error 
    } 
Powiązane problemy