J'essaie de jouer un son quand mon application est en arrière-plan. J'utilise AVAudioPlayer
, et cela fonctionne correctement lorsque l'application est active, mais en arrière-plan, AVAudioPlayer
ne joue rien et je ne sais pas comment faire.
J'ai pensé que je pourrais utiliser UILocalNotification
, mais il montre et alerte dans le lockscreen et je ne le veux pas.
Merci pour vos réponses. J'ai un autre doute. Si je crée cette audiosession, et que je joue de la musique, le système mélange les deux en même time.
Comment puis-je faire pour diminuer le volume de la musique ipod le son de mon application est en cours de lecture (3 secondes) et augmenter à nouveau quand il a fini comme la plupart des applications en cours d'exécution dans l'AppStore. (En arrière-plan aussi)
Ceci est mon code dans l'AppDelegate
//Creamos la sesión de audio [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil]; [[AVAudioSession sharedInstance] setActive: YES error: nil];
Et à mon avis quand je veux jouer le son:
-(void)avisosound{ // AudioSessionSetActive(YES); NSURL *url = [NSURL fileURLWithPath:[NSSsortingng ssortingngWithFormat:@"%@/sound.wav", [[NSBundle mainBundle] resourcePath]]]; NSError *error; audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error]; audioPlayer.numberOfLoops = 0; if (audioPlayer == nil){ } else{ [audioPlayer play]; } AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); }
Mais quand je joue le son, la musique de l'ipod s'arrête.
Vous devez faire quelques changements dans le file plist.
Ensuite, vous devez écrire le code suivant dans votre AppDelegate:
NSError *setCategoryErr = nil; NSError *activationErr = nil; [[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryPlayback error:&setCategoryErr]; [[AVAudioSession sharedInstance] setActive:YES error:&activationErr];
Maintenant, vous pouvez facilement exécuter l'audio pendant que les verrous de l'écran du téléphone ou votre application est en arrière-plan.
Ce qui suit indique au système de continuer à lire l'audio même lorsque l'écran de votre iPhone se verrouille:
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:NULL];
(La plupart du time vous mettez ceci dans votre didFinishLaunchingWithOptions
.)
Et pour dire au système de lire votre audio lorsque votre application est en arrière-plan, ajoutez UIBackgroundModes
et réglez-le à l' audio
dans votre plist.
(Toutes les applications de premier plan qui ont besoin de lire l'audio auront la priorité sur ces parameters et la lecture du son de votre application).
Pour append "ducking", pour réduire le volume de l'audio pendant la lecture de votre audio, vous devez implémenter kAudioSessionProperty_OtherMixableAudioShouldDuck. Recherchez-le dans le guide de programmation Session audio.
Pour jouer un son en arrière-plan (en supposant que votre application a configuré les modes d'arrière-plan appropriés), votre application doit démarrer le son au premier plan et ne pas l'arrêter. Les moyens les plus simples d'y parvenir sont l'API Audio Queue ou l'unité Audio RemoteIO.
Il y a un article expliquant ce que vous pouvez faire dans la bibliothèque de développeur iOS. Voir http://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/BackgroundExecution/BackgroundExecution.html