2010-12-08 24 views

Répondre

46

Utilisez la AVAudioSession catégorie AVAudioSessionCategoryPlayback et votre application ignorera le commutateur de mise en sourdine comme l'application Youtube.

Par exemple (inspiré par Ken Pletzer dans les commentaires):

#import <AVFoundation/AVFoundation.h> 

// note: you also need to add AVfoundation.framework to your project's 
// list of linked frameworks 
NSError *error = nil; 
BOOL success = [[AVAudioSession sharedInstance] 
       setCategory:AVAudioSessionCategoryPlayback 
       error:&error]; 
if (!success) { 
    // Handle error here, as appropriate 
} 
+0

Plus spécifiquement NSError* error; [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error: &error]; if(error) { }

+0

Également besoin d'ajouter AVFoundation framework et #import "AVFoundation/AVAudioSession.h" –

+0

@KenPletzer Merci Ken, j'apprécie votre commentaire. J'ai fait un petit ajustement à votre code (vérifiez la valeur du succès plutôt que l'existence de l'erreur) et mettez-le dans la réponse. –

2
_player.useApplicationAudioSession = NO; 
+2

Ceci est obsolète à partir de iOS6 – tassock

+0

Toute autre alternative pour la propriété useApplicationAudioSession? J'ai trouvé que la pomme n'a aucune propriété de remplacement pour useApplicationAudioSession :( –

1

Après avoir importé AVFoundation mis tout cela dans votre délégué:

[[AVAudioSession sharedInstance] setCategory: erreur AVAudioSessionCategoryPlayback : nul];

1

à Swift: Pour ce faire, une fois avant de jouer son/vidéo (par exemple au début de votre demande)

do{ 
    try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback) 
} catch { 
    //Didn't work 
} 
1

Pour toute personne à l'avenir, je sais que cela a été déjà répondu, mais j'avais un problème avec lecture d'une vidéo dans mon application qui a causé des applications comme Spotify, youtube etc pour arrêter de jouer est audio, donc je finir en utilisant ceci:

NSError *silentSwitcherror = nil; 
BOOL silentSwitchSuccess = [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback withOptions:AVAudioSessionCategoryOptionMixWithOthers error:&silentSwitcherror]; 
if (silentSwitchSuccess) 
{ 
//put whatever video code you are trying to play 
} 
else 
{ 
//put how to handle failed instances. 
}