Ben Dodson

Freelance iOS, Apple Watch, and Apple TV Developer

Music Tracker

I’m very happy to announce that my latest self-published app, Music Tracker, is now available on the App Store.

Music Tracker is an iPhone app that keeps an eye on your music library and monitors additions, deletions, and any changes to your songs. With streaming becoming more popular, it is very easy for song metadata to change or for songs to disappear as licensing deals expire; with Music Tracker, you will always know when something in your library changes whether it was by you, a family member, or your streaming service.

I came up with the idea for Music Tracker after noticing that the amount of songs returned by iTunes was different to that in my Music app on my iPhone. This was due to a song I had in Apple Music that was no longer available in the UK and so had been automatically deleted from my iPhone and greyed out in my iTunes library on my mac. After a quick prototype, I had an app that would run on my phone and keep track of any deletions and additions so I’d be alerted if Apple altered my music. After a few weeks, there were several changes picked up by my app including a few songs that were just plain deleted and some that were completely altered (i.e. I had a studio recording of Uptown Girl by Billy Joel that was switched for a live recording - with Music Tracker, I could see this change and switch it out for a studio recording from a different album).

In my original prototype version, I actually exported the entire music library as a JSON file and uploaded it to GitHub1. However, to make it work natively on the device without an internet connection I made use of the Realm mobile database which is fantastic and insanely fast. The entire process of extracting the metadata from your library, comparing it against the existing dataset saved in Realm, and then creating a log of changes, additions, and deletions takes around 2.2 seconds on a library of 10000 songs2 and allows a full activity feed showing changes on a granular level:

From a technical point of view, there are 3 different ways in which Music Tracker can update depending on the options you choose during setup:

  1. If you enable push notifications, then a silent push notification3 will be sent to your device once an hour that wakes up the app in the background and checks for any changes. This typically lasts around 2 seconds on a standard library of 10000 songs and in my opinion is a pretty clever way of getting around the fact that you can’t schedule background tasks on iOS.

  2. If you don’t enable push notifications, the app will make use of Background App Refresh (limited to once per hour) to do an update in the background in a similar way to the silent push notifications. These typically fire when the phone is connected to WiFi and a power source but mileage will vary depending on what apps you have installed (and for that reason I recommend the silent push option).

  3. If you go into iPhone settings and disable Background App Refresh, then the only way to update the library is to open the app and pull to refresh (or use the 3D Touch Quick Action if you have an iPhone 6s / 6s Plus).

Before finishing the app, I added full 3D touch support (both quick actions and “Peek and Pop”) and a basic Apple Watch app that allows you to see how many songs are in your library, and how many songs have been added, changed, or deleted today (along with name and artist of those tracks). In addition, there is a glance providing this information in a single screen and text-based complications for the Utility, Modular, and Mickey Mouse faces with a quick summary of your library today.

This was the first project in which I used Fastlane for the provisioning profile, certificate generation, push notification setup, TestFlight, and iTunes Connect submission and I’d highly recommend it; so much simpler than doing those things manually! The TestFlight beta test was also well worth doing as with something like this I could only really test on a handful of devices but I needed to see load times on other devices and larger libraries - a big thank you to all of my beta testers. Once the app was submitted, I was honestly expecting the app to be rejected but it went straight through review without a problem4.

The final thing to mention is an issue of privacy. I’m very proud of the fact that no data leaves your device from this app5 and I have a simple and transparent Privacy Policy6. However, I do think it is bizarre that iOS does not require any permissions dialogue when accessing the music library. I wrote a post about this last week detailing this big privacy flaw and I’ve submitted a bug report to Apple (rdar://24168798) in the hope that a standard privacy alert will be added in iOS 10.

You can download Music Tracker on the App Store (priced at $0.99 / £0.79) and learn more about it on my Dodo Apps website. If you are interested in reviewing Music Tracker or writing an article surrounding the privacy issue, you may can download the media kit which contains more information along with screenshots, mockups, and app icons.

If you find Music Tracker useful, I’m always grateful for a review on the App Store. If you run into any issues or have feature requests, you can contact me directly.

  1. You can see how this looked by seeing the commit log at https://github.com/bendodson/music-library ↩︎

  2. Your mileage may vary depending on how many songs you have in your library and what device you are using; it’s obviously faster on an iPhone 6s than a 5s. The app requires a 64-bit processor due to this and so will not run on the iPhone 4s, 5, or 5c. ↩︎

  3. The key part here is “silent”. These notifications wake up your phone and do some processing but you don’t receive any alerts, sounds, or badge icon updates unless you specifically opt-in to the “Summary Notification” within the settings panel (and that sends a simple text alert once per day if your library changed on the previous day). ↩︎

  4. Although v1.0.1 was “In Review” for 3 days before approval. ↩︎

  5. There are no analytics or tracking of any kind. I did use Parse during the beta test in order to save a basic log of library sizes and processing times but that has all been removed for the App Store version and can be checked with a network debugger like Charles Proxy. ↩︎

  6. Summary: I really don’t want your data. ↩︎

The Divide #7 - Mind Missiles and The Internet of Stuff » « Your music library is a security and privacy risk on iOS