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)
3 Réponses :
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. P>
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. P>
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.
En plus d'avoir le mode de fond n'oubliez pas de désactiver la session audio lorsque vous avez terminé la lecture de sons: P> 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:
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);
}
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.
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. P>
J'espère que ce lien peut vous aider. Stackoverflow.com/questions/6785925/...