Sam Doran

My little corner of the Internet

Streaming Music on iOS

Update 2013-09-19: This behaviour is unchanged in iOS 7.

I had a conversation on Twitter this morning with Bradley Chambers about streaming music on iOS. It brought to light what a confusing mess it is and how there is quite a bit of room for improvement. I thought I had a firm grasp on how streaming, iCloud, and iTunes Match all worked — I was quite wrong.

My understanding of streaming in iOS was based on a few articles I read some time ago describing two conflicting behaviors:

  1. Music stored in iCloud (or iTunes Match) will stream and will not be kept after the song is played. To store songs on the device, I must click the download icon next to a song or album.

  2. Music stored in iCloud (or iTunes Match) can be downloaded or streamed. Once a song is played, it stays on the device.

What I thought was happening was behavior one; in reality, behavior two is closer to the truth. Turns out, I should have just RTFM. From the iPhone User Guide Music > iTunes Match section:

Songs are downloaded to iPhone when you play them. You can also download songs and albums manually.

Pretty straight forward. This is “download on the go” not “streaming” in the traditional sense. It’s a subtle distinction that has some very different ramifications — namely, your device will fill up with music you streamed which in reality you downloaded. Don’t worry, though, Apple has you covered:

Note: When iTunes Match is on, downloaded music is automatically removed from iPhone when space is needed, starting with the oldest and least played songs. iCloud icons reappear for removed songs and albums, showing that the songs and albums are still available through iCloud, but not stored locally on iPhone.

What that last paragraph implies is that the iCloud icon is an indicator of whether or not the song is stored on the device in addition to the song’s availability in iCloud. If I see that icon in my Music library, I assume the song or album is not stored on my device. That is where I was mistaken and Bradley kindly enlightened me.

Let me walk you through what this actually looks like and show you where I was confused.

The Rabbit Hole

First, go to Settings > General > Usage and delete all Music so we’re starting with a clean slate1.

I have some music that is in iCloud or iTunes Match and it looks like this2:

I played several songs and I still see the download icon next to the songs. This was my main source of confusion: misinterpreting what that icon meant. What I thought happened is that I streamed the songs and didn’t download them. If they were in fact downloaded and not streamed, then the download icon wouldn’t be there, right? Wrong.

What actually happened and what the Music app is communicating are two different things. The songs that I played are actually taking up space on the device. I can verify this by going back to Settings > General > Usage and looking at Music. It shows there are songs taking up space.

Enabling Airplane Mode gives the clearest picture since it cuts the network connection and streaming is no longer possible. Only downloaded songs appear.

Here is where it gets even more crazy. If I turn Airplane Mode off and click the download icon next to any of the songs that I am absolutely sure are already downloaded, it downloads them again. I didn’t run any detailed network analysis to verify the song is truly being pulled down from iCloud again, but the UI animations are the same as those shown when downloading a song that is not on the device at all. This is crazy making!

Wrap Up

In short, Bradley was spot on from the beginning:

I partly understand why Apple does this: to reduce bandwidth usage for repeat plays of the same song. That is a good thing. Where I think they can improve is non-ambiguously communicating the state of a song: downloaded or available to stream3.

I also agree with Bradley that an option to control the size of this cache would be really great.

I don’t see Apple asking their users to assign storage quotas, though. A more realistic solution would be to add an option to enable or disable caching entirely.

Just let me stream my tunes and stop hurting my brain.

  1. Make sure your music is either in iCloud or you subscribe to iTunes Match before doing this. Don’t nuke your music collection!

  2. My status bar is insane and full and ugly. If you think this is bad, you should see my menu bar is OS X.

  3. Technically speaking, it seems as if Apple has three states: available to stream, streamed (cached), and explicitly downloaded. Streamed (cached) files are subject to deletion policies whereas explicitly downloaded files are not. My main beef is with the communication of the cached or downloaded state.