2015-09-20 11 views
9

In iOS 9 (Xcode 7, Swift 2.0) Ich versuche, einen Ton im Silent-Modus mit dem folgenden Code zu spielen:Sound abspielen auf iOS 9 im Silent-Modus

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

Nach anderen Antworten und Apple Dokumentation Ich dachte, das sollte funktionieren, aber es gibt keinen Ton auf iOS 9 im Silent-Modus. Es spielt es, wenn es nicht im stillen Modus ist. Aus dem Apple-Dokument:

AVAudioSessionCategoryPlayback - Nur Wiedergabe. Spielt Audio auch bei gesperrtem Bildschirm und mit dem Ring/Silent-Schalter auf lautlos. Verwenden Sie diese Kategorie für eine App, deren Audiowiedergabe von größter Wichtigkeit ist.

Fehle ich etwas hier oder gibt es eine andere/neue Möglichkeit, dies zu arbeiten?

+3

Ich hoffe, dass es nicht funktioniert. Wenn ich mein Telefon in den Stumm-Modus bringe, möchte ich nicht, dass Apps Töne erzeugen. Das ist der Punkt des stillen Modus. – rmaddy

+2

Aus Apples Doc sollte dies möglich sein. Und ich benutze es für eine Timer-App, in diesem Fall sollte es sogar spielen, wenn das Telefon im stillen Modus ist, weil es von primärer Bedeutung ist. – lammert

+0

@lammert würdest du etwas ähnliches finden? Bitte schlagen Sie mir vor, wie es in ios 8 und später speziell für Silent-Modus funktioniert – Abha

Antwort

4

Dies ist mein Code:

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

AudioPlayer.play() 

es auf meinem iPhone funktioniert.

Viel Glück!

+1

Großartig! Dies funktioniert auch in iOS10! – demonofthemist

+0

Sound spielt weiter für mich. Funktioniert nicht. – user3427013

+0

@ user3427013 soll nicht dieser Code den Sound spielen lassen? Wenn Sie aufhören möchten, tun Sie 'AudioPlayer.stop()' –

0

Für Swift 3.2:

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