As we have been preparing for our 1:1 iPad program next school year, we have worked through a variety of restrictions, MDM setups, support workflows, web clips, CALDAV Subscriptions and many other topics. One set of the restrictions we worked with through our JAMF Casper implementation was using the self-service app as an installation platform while also restricting the App Store for our students. In our case, the iPads being put in place will be for 7th and 8th graders at this stage and are school provided.
A challenge with the App Store being restricted is handling the application update process as it is no longer possible to allow this to occur via built-in iOS mechanisms; it becomes quite manual. Manual to bump app version numbers, manual to “enable” the update, manual to find out which apps are updated. As app deployments scale upward, keeping track of application versions of iOS apps becomes quite tedious. Being one for favoring an automated approach versus a manual approach, I spent some time parsing HTML content from the Apple App Store. What was I trying to accomplish from looking at all this code? Identifying this:
I wanted to find a way to reference the version number of the app from the iTunes Store. Why? Well, if I know the version of the app I have pushed out and I can find the most current version, there must be some way to compare the two to let me know “Hey, you need to go update Numbers”. A great thing about the app store is the structure. All apps look the same. You have the app name, the vendor, a description, a price, category, and most important, a version. What is great about structure you ask? It is like a cookie cutter for information. And that is where this gem comes in:
That line is the XPATH of the app version number. With 51 apps each and every app had the version at that value; think of it is the HTML address of the value within the body of the page.
How does this all come together? Using a Google Sheet I’m able to enter in the name of an app, the initial installed version and a link to the App Store; three pieces of information. From there a comparison is run on the app with the deployed version to the version reported on the page of the app from the iTunes store. This is the version that changes each time an app receives an update. If the versions do not match, format text in a spreadsheet to let me know there is an update.
From all of that, it comes out looking like this:
From this I can filter the list to only show me entries where an Update Required = “Yes”. There is a bit of time required to build the app list, especially if you have a lot of apps, but once it is in place there is a single location you can go to in order to determine which apps have updated.
Again, this is a function of restricting the app store to not be enabled on our student iPads. If the App Store was enabled, this could all happen on it’s own in the background.
If you would like to make a copy of this sheet for your own use, please head on over to this link: https://docs.google.com/spreadsheets/d/1pKQfORjYsI7ydITp5YVDxALZHftpxRHpNqCstve9Fl0/edit?usp=sharing and choose File -> Make a copy. From there you can replace values with your own.
There may be some other ways to make this process more automatic, but everything has to have a start!