9
votes

IOS: jouer au son pendant l'application

Je travaille sur une petite application où je souhaite que le téléphone joue un fichier son sur un événement à partir de mon contrôleur de localisation. Le problème est que lorsque l'application est en mode arrière-plan, l'avaudioplayer ne démarre pas le fichier audio, mais le code est planifié, obtenir la sortie NSLog. Une autre chose est qu'elle fonctionne dans le simulateur mais pas sur le téléphone.

Whays pas? P>

Ceci est mon code pour lire le fichier: p>

Apr 26 13:57:48 iPhone CommCenter[58] <Notice>: Client [com.apple.persistentconnection[dataaccessd,85]] is telling PDP context 0 to go active.
Apr 26 13:57:50 iPhone Herning100[1467] <Warning>: Playing audiofile - filename is Fil03
Apr 26 13:57:50 iPhone mediaserverd[39] <Warning>: 13:57:50.653 <AudioControl> WARNING translating CMSession error: -12985 
Apr 26 13:57:50 iPhone mediaserverd[39] <Warning>: 13:57:50.656 <AudioControl> WARNING translating CMSession error: -12985 
Apr 26 13:57:50 IPhone mediaserverd[39] <Error>: 13:57:50.734 <AudioControl> AudioQueue: Error -12985 from AudioSessionSetClientPlayState(1467)
Apr 26 13:57:50 iPhone Herning100[1467] <Warning>: -[AppDelegate tryPlayTaleSound:] - 
Apr 26 13:57:50 iPhone com.apple.debugserver-199[1465] <Warning>: 9 +28.832083 sec [05b9/0303]: error: ::mach_vm_region_recurse ( task = 0x1603, address => 0xfffffffe, size => 0, nesting_depth => 1024, info => 0x2fd7fe48, infoCnt => 12) addr = 0xfffffffe  err = (os/kern) invalid address (0x00000001)
Apr 26 13:57:51 iPhone com.apple.debugserver-199[1465] <Warning>: 10 +0.187961 sec [05b9/0303]: error: ::mach_vm_region_recurse ( task = 0x1603, address => 0xfffffffe, size => 0, nesting_depth => 1024, info => 0x2fd7fe48, infoCnt => 12) addr = 0xfffffffe  err = (os/kern) invalid address (0x00000001)


1 commentaires

J'espère que ce lien peut vous aider. Stackoverflow.com/questions/6785925/...


3 Réponses :


0
votes

sur iOS Seule certaines des applications sont autorisées à exécuter en arrière-plan. L'une d'entre elles est une application de lecteur audio mais pour eux, vous devez définir "les modes de fond requis" avec "Audio" (l'application peut lire audio) dans votre info.Plist.

et oui si vous êtes capable d'obtenir l'emplacement en arrière-plan, vous devez avoir défini cette touche dans votre plist. Ajouter également l'autorisation audio dans le plat.


1 commentaires

Merci mais j'ai en fait un emplacement et votre audio dans le fichier de plis. Si un audio est démarré alors que l'application est exécutée, n'est pas Poursuivre la lecture après que je minimise l'application. Mais lorsque ce son est fait, il ne démarre jamais le nouveau audio en mode arrière-plan.



12
votes

En plus d'avoir le mode de fond audio code> dans votre info.plist code> Vous devez définir la session audio partagée sur le mode correct pour votre application et l'activer juste avant de jouer Votre son en arrière-plan: xxx pré>

n'oubliez pas de désactiver la session audio lorsque vous avez terminé la lecture de sons: P>

AVAudioSession *audioSession = [AVAudioSession sharedInstance];
NSError *error = nil;
NSLog(@"Deactivating audio session");
BOOL result = [audioSession setActive:NO error:&error];
if (!result) {
    NSLog(@"Error deactivating audio session: %@", error);
}


2 commentaires

OP: Je fais exactement la même chose que vous et cette solution fonctionnait parfaitement. J'ai un autre code que j'ai ajouté cela, donc si cela ne fonctionne pas pour vous, faites le moi savoir et je peux partager ce que j'ai fait pour le faire fonctionner au sujet de ce que GLLEBD a déjà écrit.


Merci, j'ai besoin de définir la catégorie sur "AvaudiossessionCategoryplayBack" pour lire audio est lorsque l'application est en arrière-plan.



1
votes

Avant de commencer à jouer un son en arrière-plan, configurez une tâche d'arrière-plan. Il semble que iOS refuse de démarrer un son en arrière-plan si l'heure de l'arrière-plan restant est inférieure à 10 secondes.


0 commentaires