Je développe une application musicale, qui devrait jouer de la musique à l'arrière-plan.
J'utilise le quand j'exécute mais rien ne s'affiche dans le Lockcreen. Il n'est pas affiché dans le ControlCenter non plus. P> Comment puis-je résoudre mon problème? Je n'ai rien trouvé sur Internet. P> Merci d'avance, Fabian. P> P> mpmovieplayController code> pour jouer à la musique. Mon code pour initier le
mpmovieplayercontroller code>: p>
[jeu de jeu auto.player]; code> La musique commence.
Mais je veux aussi afficher le nom de la chanson, le nom de l'album et l'œuvre d'album dans le Lockscreen et le ControlCenter. J'utilise le code suivant: p>
4 Réponses :
Le problème est que vous ne satisfaisez pas aux exigences de devenir maître de l'écran de verrouillage et du centre de contrôle, comme i Expliquez dans mon livre . Vous devriez voir l'équivalent moderne (iOS 8) de ceci: p>
p>
Le fait que vous ne voyez pas cela suggère que vous omettez une ou plusieurs des exigences, que je liste (citant directement de mon livre ici): P>
CanbecomefirSpeter code>, et ce répondant doit
effectivement être le premier répondeur. LI>
- Quelqu'un de l'upondeur dans la chaîne du répondeur,
à ou au-dessus du premier répondant, doit mettre en œuvre
RemoteControlReceedVenteVente: code>. li>
- Votre application doit appeler l'uapour
Méthode d'instance
BeginReceiveceRemotecontrolvents Code>. Li>
- Audio de votre application
La politique de la session doit être la lecture. LI>
- Votre application doit émettre du son. Li>
ul>
Je ne sais pas lequel de ceux que vous omettez; Cela pourrait être plus d'un. Vous voudrez peut-être comparer votre code avec un exemple de travail, ici: p>
Oui, c'est la solution. Merci beaucoup pour votre aide!
Vous êtes très bienvenu. C'est beaucoup d'exigences! Omettre l'un d'entre eux est facile, puis les choses ne fonctionnent pas mystérieusement. :(
Avez-vous de la chance pour que cela fonctionne lorsque vous jouez via un WKWebView? Je peux obtenir d'autres sources pour changer maintenant, tout au long de la lecture d'un WKWebView.
Est-ce possible dans AvenuePlayer? Signifie que je puisse ajouter NSMutabledictionner en externe à Avplayer pour définir l'oeuvre ..etc
@matt ce poste était vraiment utile pour moi et résolu mon problème, merci!
J'ai vérifié que mon application fait tout dans la liste, mais les commandes d'écran de verrouillage et les informations n'apparaissent pas lorsque je démarre l'application et lisez le flux la première fois. Je dois arrêter et redémarrer le flux (ICECAST), puis sur la deuxième tentative des contrôles d'écran de verrouillage et des informations apparaissent. Les étapes de la première tentative et de la deuxième tentative sont exactement les mêmes (c'est-à-dire pas de conditions de race filetage ou asynchrones). Je ne sais donc pas pourquoi l'écran de verrouillage ne fonctionne pas correctement à la première tentative.
Vouloir développer @ Matt's Réponse - Réglage NowplayingInfo est inutile lorsque vous utilisez AvaudiosessionCategoryOptionMixWithothers Code> Option. P>
Est venu ici pour ajouter ceci - si vous ajoutez .mixwithothers code> Vous ne pourrez pas définir les détails du centre de contrôle comme prévu.
Développer plus loin sur la réponse de @ Matt, il est nécessaire que vous appeliez endreceiviveurremotecontrolevents code> et
résigneurfiresponder code> lorsque l'application revient au premier plan (
ApplicationDidbecomeactive code>) . Sinon, le système d'exploitation suppose que vous êtes un mauvais acteur (ou que vous avez oublié de les éteindre) et désactive votre capacité à afficher entièrement les commandes de sommeil, même après avoir appelé
BeginReceivivemotecontrolevents code>. J'ai ajouté ces appels et maintenant les contrôles de sommeil montrent toujours quand ils le devraient. P>
Voulez-vous expliquer la réponse de @ Zakhej - Que se passe-t-il lors de la définition d'AvaudiosessionCategoryOptionMixWithothers. p>
Alors. Lorsque vous définissez la catégorie AvudiosessionCategoryambient, AvaudiosessionCategoryplayLayRecord et mélangez avec d'autres, AvaudiosessionCategoryPlayBack et mélangez avec d'autres, définir Mpnowplayinginfocenter's NowplayingInfo est inutile. P>
Votre code est-il réellement exécuté?
Oui, [[[MPNOWPlayingInfocenterfaultCenter] .NOWPlayingInfo ObjectForKey: MmeMediAtEmProperTytiTle] renvoie la bonne chanson.
Aha! C'est vraiment une bonne nouvelle. Donc, pas seulement votre code est exécuté, mais il définit réellement le
NowplayingInfo code> avec succès. Alors laissez-moi vous demander cela - êtes-vous un premier répondeur, de sorte que vous recevez avec succès les événements de contrôle à distance de l'écran de verrouillage et du centre de contrôle?
Les télécommandes ne sont effectivement pas affichées dans l'écran de verrouillage et je ne pense pas, mon application devient le premier répondant.
Je pense que c'est le problème, alors. Vous ne pouvez pas influencer l'écran de verrouillage à moins que vous soyez le premier répondeur.
Ok, et comment je peux résoudre le problème?
Vous devez être le premier répondeur. Et il y a aussi d'autres exigences. Voir ma réponse ci-dessous, avec le matériel lié.