The Music Player

The Media Player framework class for playing an MPMediaItem is MPMusicPlayerController. It comes in two flavors, depending on which class method you use to get an instance:

Plays an MPMediaItem from the music library within your application. The song being played by the applicationMusicPlayer can be different from the iPod/Music app’s current song. This player stops when your app is not in the foreground.
The global music player — the very same player used by the iPod/Music app. This might already be playing an item, or be paused with a current item, at any time while your app runs; you can learn what item this is, and play music with this player. It continues playing independently of the state of your app. The user can at any time completely change what this player is doing.


An applicationMusicPlayer is not really inside your app. It is actually the global music player behaving differently. It has its own audio session; if you activate an audio session with a Solo Ambient or Playback policy (Chapter 27), the player will stop. You cannot play its audio when your app is in the background. You cannot make it the target of remote control events. If these limitations prove troublesome, use the iPodMusicPlayer (or AVPlayer, as discussed later in this chapter).

A music player doesn’t merely play an item; it plays from a queue of items. This behavior is familiar from iTunes and the iPod/Music app, though you might not have ...

Get Programming iOS 4 now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.