Frage

Ich habe zwei Tage auf diesen verbracht und habe nirgends bekommen. Ich bin zu verwenden versuchen, [MPMusicPlayerController applicationMusicPlayer] audio aus dem iPod-Bibliothek des Benutzers gewählt zu spielen und hat es im Hintergrund läuft, sowie die Unterstützung Remote-Veranstaltungen. Nun ist die immer Musik ist tatsächlich spielt der einfache Teil. Holen Sie sich das Beispiel, die Lieder auszuwählen, weisen Sie die Musikliste und Spiel. Gemacht und gemacht. ABER ... a) kann ich nicht bekomme es im Hintergrund zu spielen, und b) auch dann, wenn im Vordergrund kann ich die Fernbedienung Ereignisse Arbeit überhaupt erhalten!

Und bevor Sie fragen, ja, ich habe die plist Einträge eingestellt haben, die Audiositzung Kategorie, zu der Anruf sagen, dass ich in immer Remote-Ereignisse interessiert bin und ein First Responder einrichten, für sie zu hören, so wenden Sie sich bitte wissen, ja ich habe gelesen, jedes einzelne Dokument zu diesem Thema gelesen, dass ich finden konnte * (* eine Aufgabe, die ich von Apple die Schuld für für überhaupt nicht zu diesem Thema ist klar, noch für sie kein Beispiel Code!) und ich habe jeden angeschaut einer der WWDC Videos, um es (unabhängig Einfrieren des Bildschirms den Code genau aus ihrem Beispiel zu kopieren ...) so, wenn ich etwas verpaßt habe nicht in dieser Liste , mit jedem dieser Antworten antworten ist nicht auf Hilfe gehen.

Eine weitere Sache ... Ich spreche ausdrücklich über die MPMusicPlayerController verwendet, die die Dokumentation nach, nie eine Anwendungssitzung verwendet. Es wird immer die Systemsitzung. (Vielleicht in sich das beantwortet meine Frage, aber die docs sagen nicht klar, dass so ich bin mir nicht sicher, deshalb wird diese Frage.)

sagte, dass nach zwei Tagen, meine Gedanken sind dies:

  1. Wenn die MPMusicPlayerController verwenden, unabhängig davon, welche Methoden, die Sie anrufen oder was plist Einträge, die Sie einstellen, Ihre App wird nie im Hintergrund laufen. Zeitraum. Wenn Sie die ipodMusicPlayer Instanz verwenden, hält die Musik zu spielen, aber das ist, weil es den iPod, dass das Spiel, nicht Ihre App. Wenn Sie die applicationMusicPlayer Instanz stattdessen verwenden, wenn sie auf dem Hintergrund Ihrer Musik geht stoppt. In beiden Fällen wird Ihre Anwendung suspendiert.

  2. Unabhängig von Ihrer die ipodMusicPlayer oder applicationMusicPlayer Instanzen verwenden, alle Remote-Ereignisse gehen auf die iPod-Anwendung selbst, nicht verkaufen, auch wenn Sie ausdrücklich darum gebeten haben. Wenn Sie die applicationMusicPlayer Instanz verwenden und Sie die Fernbedienung, um ‚Play‘ erhält der iPod App den Befehl so Ihre Audio-Enten und wird unterbrochen und die Wiedergabe beginnt in dem iPod-App. Wenn Sie die ipodMusicPlayer stattdessen entschieden haben, dann natürlich spielt es keine Rolle, wie Sie ausdrücklich gesagt haben, sind Sie im Grunde interessiert nur in der Ferne die iPod App steuern, die wiederum, ist das, was eigentlich die Remote-Ereignisse empfängt.

  3. Das Symbol in der Schnellschalter Steuerelemente unten ändert sich nie auf Ihre App-Symbol ist, weil wieder, Ihre App die Ereignisse nie tatsächlich eingerichtet zu empfangen. Die iPod-Anwendung ist, weshalb das entsprechende Symbol dort angezeigt wird.

Also, was ich wissen will, ist ... bin ich hier falsch? Hat jemand erfolgreich in der Lage gewesen MPMusicPlayerController und konnte abfangen die Remote-Ereignisse zu benutzen? Während ich die applicationMusicPlayer mit Hintergrundmusik Unterstützung zu verwenden, würde es vorziehen, so dass ich mit dem Benutzer iPod nicht Dreck zu tun, ist die größere Sache Fernbedienung Benachrichtigungen, das heißt, wenn ich die ipodMusicControl verwenden und meine App im Vordergrund abfangen oder ziehen Nachrichten, sei es so. Es ist hässlich, dass Art und Weise, aber zumindest ist es etwas.

Code-Beispiele oder zumindest explizite Schritte gegen einen der integrierten App-Vorlagen würden sehr geschätzt. (Nicht einmal die Implementierung benötigt ... nur die Schritte. Hoffentlich die unvermeidlichen beschwichtigen wird: ‚Es ist unter NDA noch‘ Sache, die Menschen halten die Beantwortung von Fragen mit.)

Mark

War es hilfreich?

Lösung

I solved it. The info is in my other question over here...

Stack Overflow: Play iPod music while receiving remote control events

...but the short version is you have to use AVPlayer (but not AVAudioPlayer. No idea why that is!) with the asset URL from the MPMediaItem you got from the library, then set the audio session's category to Playable (do NOT enable mixable!) and add the appropriate keys to your info.plist file telling the OS your app wants to support background audio.

This lets you play items from your iPod library (except Audible.com files for some reason!) and still get remote events. Granted you have to do more work, and since this is your audio player which is separate from, and will interrupt the iPod app (which may or may not be desirable. And again, don't enable mixing or the iPod app will hijack the remote control events) but those are the breaks!

Andere Tipps

For anyone who wants to know, I found out to get the audio playing in the background, you have to set the audio session's category to Playable and then background audio works just fine. If you also want to play your own sounds at the same time, you have to mark the category as mixable. That solved the background music part. But what I've found out is any time the iPod is playing, it doesn't seem possible for you to get remote notifications.

Here's the updated thread...

How can you play music from the iPod app while still receiving remote control events in your app?

M

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top