2012-03-28 21 views
1

Was ist der "richtige" Weg, um mit meiner App Audio abzuspielen, auch wenn der Silent/Mute-Schalter des Benutzers auf silent/vibrate gestellt ist?iOS: Wiedergeben von Audio im unbeaufsichtigten Modus

Einige Hintergrund: Ich habe es tatsächlich in Debug-Phase funktioniert, aber als ich meine App an Apple gesendet und dann später aus dem App Store heruntergeladen, wurde das Audio im Silent-Modus deaktiviert! Hier ist, wie ich es in Debug-Phase arbeiten:

UInt32 sessionCategory = kAudioSessionCategory_MediaPlayback; 
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, 
         sizeof(sessionCategory), &sessionCategory); 

Audio wurde mit gespielt:

NSString *path = [[NSBundle mainBundle] pathForResource:fileName ofType:@"mp3"]; 
AVAudioPlayer *theAudio = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL]; 
theAudio.delegate = self; 
[theAudio play]; 
+0

Warum soll die App Sounds abspielen, wenn der Benutzer sie nicht hören möchte? Sind Sie sicher, dass Ihre Nutzer dies wünschen? – Hyperbole

+0

Ich weiß, es gibt die Regel über "Sie sollten nicht im stillen Modus Audio abspielen, es ist eine schlechte Benutzererfahrung", aber meine App ist eine Art Ausnahme, weil der einzige Zweck es ist, Geräusche zu machen, und die "schlechte Benutzererfahrung" würde eigentlich von Usern kommen, die "Play" schlagen, in der Erwartung, Sounds zu hören, und stattdessen nichts bekommen, ohne zu merken, dass ihr stummer Schalter auf lautlos gestellt ist. – user1221973

+0

Möglicherweise erkennen Sie den Stummschaltungsstatus und informieren den Benutzer, dass er keine Geräusche hören wird, bis das Gerät wieder stummgeschaltet wird. Das entspricht eher Apples HIG. – Hyperbole

Antwort

0

Ich denke, es macht das Gleiche, aber haben Sie versucht, die Einstellung Throught AVFoundation Einstellung wie so ?

[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil]; 
    [[AVAudioSession sharedInstance] setActive: YES error: nil]; 
+0

Das funktioniert genauso gut, aber ich denke, es gibt keine Garantie, dass es auch nach der Debug-Phase nicht fehlschlagen wird. – user1221973