Arrière-plan audio et à distance en utilisant Control Support MPMusicPlayerController sur iOS 4. Est-ce même possible?

StackOverflow https://stackoverflow.com/questions/3175974

Question

J'ai passé deux jours à ce sujet et ont obtenu nulle part. Je tente d'utiliser [MPMusicPlayerController applicationMusicPlayer] pour lire l'audio choisi dans la bibliothèque iPod de l'utilisateur et l'avoir en arrière-plan, ainsi que des événements de soutien à distance. Maintenant, pour la musique est en train de jouer la partie facile. Obtenez l'instance, choisissez les chansons, attribuez la file d'attente de la musique et le jeu. Fait et fait. MAIS ... a) Je ne peux pas le faire jouer en arrière-plan, et b), même si au premier plan, je ne peux pas les événements de contrôle à distance de travail du tout!

Et avant de vous demander, oui, je l'ai mis les entrées plist, la catégorie de la session audio, l'appel à dire que je suis intéressé à obtenir des événements à distance et mettre en place un premier répondeur à écouter pour eux, alors s'il vous plaît savoir, oui , j'ai lu lu chaque document sur le sujet que je pouvais trouver * (* une tâche que je blâme Apple pour ne pas être du tout clair à ce sujet, ni d'avoir un code d'exemple!) et je l'ai regardé tous les l'une des vidéos de la WWDC le concernant (gel même l'écran pour copier le code exactement de leur exemple ...) donc à moins que je l'ai raté quelque chose pas dans cette liste , répondant à l'une de ces réponses ne va pas à l'aide.

Une autre chose ... Je parle explicitement sur l'utilisation du MPMusicPlayerController qui, selon les documents, utilise jamais une session d'application. Il utilise toujours la session du système. (Peut-être que lui-même répond à ma question, mais les documents ne disent pas clairement que je ne suis pas sûr, d'où cette question.)

Cela dit, au bout de deux jours, mes pensées sont ceci:

  1. Lorsque vous utilisez le MPMusicPlayerController, peu importe ce que les méthodes que vous appelez ou quelles entrées plist vous définissez, votre application ne fonctionnera jamais en arrière-plan. Période. Si vous utilisez l'instance ipodMusicPlayer, la musique continue à jouer, mais c'est parce qu'il est l'iPod qui joue, pas votre application. Si vous utilisez l'instance applicationMusicPlayer à la place, lors du passage à l'arrière-plan de votre musique s'arrête. Dans les deux cas, votre application est suspendue.

  2. Quel que soit votre utilisation des instances ipodMusicPlayer ou applicationMusicPlayer, tous les événements à distance aller à l'application iPod lui-même, pas le vôtre, même si vous avez explicitement demandé pour eux. Si vous utilisez l'instance applicationMusicPlayer et que vous utilisez la télécommande pour sélectionner « Play », l'application iPod reçoit la commande afin que vos canards audio sur et est interrompue et la lecture commence dans l'application iPod. Si vous avez choisi le lieu ipodMusicPlayer, puis bien sûr, il n'a pas d'importance que vous avez explicitement dit que vous êtes essentiellement intéressé juste à contrôler à distance l'application iPod qui encore une fois, est ce qui reçoit en fait les événements à distance.

  3. L'icône dans les commandes rapides interrupteur au fond ne change jamais à l'icône de votre application parce qu'encore une fois, votre application est jamais réellement mis en place pour recevoir les événements. L'application iPod est, ce qui est la raison pour laquelle son icône ne semble là.

Alors, ce que je veux savoir est ... je me trompe ici? Quelqu'un at-il été en mesure d'utiliser avec succès MPMusicPlayerController et été en mesure d'intercepter les événements à distance? Bien que je préfère utiliser le applicationMusicPlayer avec le soutien de la musique de fond, donc je ne suis pas muck avec l'iPod, la chose plus est des notifications de contrôle à distance de l'utilisateur, ce qui signifie si je dois utiliser le ipodMusicControl et de garder mon application au premier plan pour intercepter les messages, soit. Il est laid de cette façon, mais au moins c'est quelque chose.

exemples de code, ou au moins les étapes explicites contre l'un des modèles intégrés d'application seraient appréciés. (Ne même pas besoin de la mise en œuvre ... juste les étapes. Il faut espérer que apaisera l'inévitable « Il est encore sous NDA » chose que les gens continuent de répondre aux questions avec.)

Mark

Était-ce utile?

La solution

Je l'ai résolu. L'information est dans mon autre question ici ...

Stack Overflow: jouer de la musique iPod tout en recevant des événements de contrôle à distance

... mais la version courte est que vous devez utiliser AVPlayer (mais pas AVAudioPlayer. Aucune idée pourquoi c'est!) Avec l'URL de l'actif du MPMediaItem que vous avez obtenu de la bibliothèque, puis définissez la catégorie de la session audio à Jouable ( ne permettent pas mélangeables!) et ajoutez les touches appropriées à votre fichier Info.plist dire le système d'exploitation de votre application veut support audio de fond.

Cela vous permet de lire des articles de votre bibliothèque iPod (sauf les fichiers Audible.com pour une raison!) Et encore obtenir des événements à distance. D'accord, vous devez faire plus de travail, et puisque c'est votre lecteur audio qui est séparé, et interrompt l'application iPod (qui peut ou peut ne pas être encore une fois et souhaitable., Ne permettent pas le mélange ou l'application iPod détournera la événements de contrôle à distance), mais ce sont les pauses!

Autres conseils

Pour tous ceux qui veulent savoir, j'ai découvert pour obtenir la lecture audio en arrière-plan, vous devez définir la catégorie de session audio à Jouable puis audio de fond fonctionne très bien. Si vous voulez aussi jouer vos propres sons en même temps, vous devez marquer la catégorie comme mélangeables. Cela a résolu la partie de la musique de fond. Mais ce que j'ai découvert est tout moment l'iPod joue, il ne semble pas possible pour vous de recevoir des notifications à distance.

Voici le fil mis à jour ...

Comment pouvez-vous jouer de la musique depuis l'application iPod tout en recevant à distance événements de contrôle dans votre application?

M

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top