AirPlay architecture

To some extent the euphoria is justified: Apple AirPlay is genuinely excellent. But it has a very big drawback: the media bytes played by the device with the speakers must pass through an iOS device. The device with the speakers can’t fetch those bytes from the internet itself.

This will run the radio on your phone constantly, so the battery will run down.

This will stop the song when you get a call, or when you leave the room with your phone in your pocket, so anybody else listening to music on the AirPlay speakers in your living room will have the music suddenly end.

These are not small problems for the user.

To fix them, AirPlay needs to be rearchitected so that the device with the speakers is a semi-autonomous bot fetching its own audio from the internet or a local storage device. Your iOS controller would pass instructions for what media to fetch rather than the media itself. For example, it might send a playlist of MP3 URLs instead of fetching each MP3 URL and retransmitting the bytes.

However this new architecture is much harder to implement outside of the trivial case of an M3U playlist of MP3s on the open web. In the case of something like MOG’s iPhone player, which has complex and constantly changing security requirements, iOS developers might need to provide a little headless program to run on the device with the speakers.