A few days ago (at midnight of course – we always release stuff in the middle of the night when no one will notice) we posted a new song to our app. It was pretty exciting. It was the first time I had tried to push an update to the app and I had no idea if it would even work. And then we got to send a push notification that popped up on everyone’s iPhones, iPads and iPod Touches. We opened a bottle of wine, sat in the garden and finished typing up the liner notes before finally letting it loose.

It worked, but not brilliantly. The few fans who were up and checking their phones in the middle of the night quickly tweeted to let us know that they had to restart the app a few times before the song appeared. It turns out the Reload feature from Trigger.io that I’m using to update the app isn’t quite as magical as I’d hoped. Or maybe I just didn’t read the instructions well enough.
Once you open the app, it checks to see if there’s an update available. If there is, it starts downloading it next time the app loses focus (I think). Then when you switch back to the app it checks if the download is finished, and if so it loads the new content (I think). The problem was that the update wasn’t just HTML and CSS. It also included the photos and the MP3 of the garage recording, so it took a while to download. And people (sensibly) tried restarting the app a few times, which probably interrupted the download.
So it looks like I need to do a bit more coding. There needs to be a bit of code that shows you something’s going on – that there’s an update available, that it’s downloading, that it’s downloaded, that you can restart the app to see it. I think all these things are possible. It also needs to deal with interrupted downloads, multiple updates for people who install the app later in the year and various other cases. My simple little app is getting complicated.
I also want to make the audio and image files separate – they’re too heavy to include in the Reload, especially if it makes everything slow and confusing. If the Reload just updates the HTML, CSS and JavaScript needed for the new song it should download in a flash, and once that’s done the app can check the HTML to see which images and audio files are needed and download them from my server (they’ll be cached locally by the app so they’ll still be available offline). This can be version 2.
It’s tempting to move all the content management stuff over to my server and scratch the Reload bit altogether, but that would mean a whole load more code to do all the stuff that Reload does well – only update files that have changed, keep track of who’s running which version of the app and so on. Maybe that’s version 3, where you can just chuck a new song and liner notes in your Dropbox and it automatically syncs to the server and gets pushed out to people’s phones…