How to push VPP apps to device instead of user

Malcolm
Contributor II

Now that iOS 9 supports VPP distribution without associated apple ID, how do you set it so it will ignore apple id details and install the app using VPP?

Or is this not available in JSS 9.8 yet?

22 REPLIES 22

Malcolm
Contributor II

Oh you can delete this post... its not available just yet.

patiently waits :D

davidacland
Honored Contributor II
Honored Contributor II

Looks like Apple have rolled it out already in Server.app 5.0.3 so hopefully it won't take too long for JAMF to add it!

St0rMl0rD
Contributor III

waits

jarednichols
Honored Contributor

Correct, it's supported in Profile Manager if you're on Server 5.0.3. Keep in mind that an app also needs to support VPP device-based licensing. How do you find out?

I'm glad you asked.

The iTunes Store has an API that you can either manually hit a URL for, or do something programmatically to check these sorts of things. The general URL is:

http://itunes.apple.com/lookup?id=<appstore_ID_Number>

How do you get the App Store ID number? If you search for the app in question in iTunes, it's fairly easy. Next to the "Buy" or "Get" button (depending if it's free or paid) click the chevron and click "Get Link". Paste that link somewhere and you'll see something like

https://itunes.apple.com/us/app/self-service-mobile/id718509958?mt=8

Our ID in this case is 718509958. The app I've looked up is JAMF Self Service. Now plunk that into the API URL format:

http://itunes.apple.com/lookup?id=718509958

If you drop that URL into a browser, you'll get a JSON response. To find out if the app supports device-based VPP licensing, the key you're looking for is

isVppDeviceBasedLicensingEnabled

An app that supports VPP device-based licensing will return a value of true.

In Self Service's case, the value is false.

Get on it, JAMF. :)

john_miller
Contributor

Hey All

Casper Focus, Self Service, and Relo all support Device Based VPP assignments.

Thank for the great walkthrough on how to check @jarednichols

MischaB
New Contributor II
New Contributor II

also patiently waiting............. please let it be in 9.81!!! ;-D

kyle_bareis
New Contributor III

@jarednichols

Hey Jared,

I took your idea and ran with it (and python). This script will look for the top five apps based on search results and let you know if it can be used with device based licensing.

Device Based Licensing Search.pyd4fc19afb01c4c4393f2ea7fb446df96

jarednichols
Honored Contributor

cb27b27116934247b3cbc1740066849b

bumbletech
Contributor III

And here's yet another method:

https://drive.google.com/previewtemplate?id=1WxoZTw6l6Tlhj4_t4tjj_e3O5Oh_C3tVsjeiF7f-z5Q&mode=public

I setup this Google sheet a while ago that uses ImportJSON by Trevor Lohrbeer (http://blog.fastfedora.com/projects/import-json) to populate information from the iTunes Search API. It's also really great for calculating purchases and archiving "images."

AVmcclint
Honored Contributor

@kyle.bareis that script is awesome. Unfortunately it's weakness may be that Apple's own searching doesn't seem to list by relevance. I tried searching for Xcode and Apple Remote Desktop with your script and neither cracked the top 5. I experience the same problem sometimes when I search for apps directly in the App Store.

AVmcclint
Honored Contributor

@jbourdon Can you make your link available outside of Google? I can't access it without having a google account.

kyle_bareis
New Contributor III

@AVmcclint

Sorry about that... iTunes API sorts by iOS apps first. I added another call in to ask if it is an iPad (iOS) or Mac software title.

AVmcclint
Honored Contributor

awesome. that worked.

St0rMl0rD
Contributor III

@jbourdon doesn't work for me, when I paste the iTunes link into the spreadsheet...

EDIT: works now, weird.

mmurray
New Contributor II

Great spreadsheet thanks jbourbon!

ayla_abbott
New Contributor III

That spreadsheet is a lifesaver. Thanks @jbourdon

St0rMl0rD
Contributor III

Made a short video of how this work in reality. User not logged in to App Store, and even App Store disabled. Works like a charm!

https://vid.me/3lsA

St0rMl0rD
Contributor III

We had to contact about 40 developers that don't have this enabled for their apps yet, out of 180 apps that we use. They all asked me for instructions on how to enable that, since they don't see it in iTunes Connect. Now they're turning to Apple to let them know how to enable this. Does anyone else experience the same?

anne_benson
New Contributor II

So, will Self Service install automatically without asking people to sign in with their Apple ID? It seems to be the critical point and I don't see anywhere, either in Global settings or in the app itself where you can indicate that it can be assigned to devices?

Nick_Gooch
Contributor III

@St0rMl0rD Same here. It would be nice to know where you enable that option. I searched some Apple help docs and didn't see anything.

stoneacheck
New Contributor III

@kyle.bareis @jbourdon is there an easy way to get iTunes URLs of every app in mobile device catalog from your JSS? My best guess is running a GET on /JSSResource/mobiledeviceapplications and then parsing the values in <name></name> out of each entry and looping through the /JSSResource/mobiledeviceapplications/name/{name} with those values to get the <itunes_store_url> values of each record? I know just enough about scripting to understand I'd have to iterate through a loop but I have no idea how that gets accomplished. Anyone smarter than me want to take a crack at it and show their work in the spirit of JNUC? With a csv or text file of those urls we could just pop them in that sweet google sheet and do a quick filter to find the offenders...

(I did install xmlstarlet and try and do this myself in bash for about 30 minutes, but that's my "ask for help if you haven't made progress" time limit)

St0rMl0rD
Contributor III

Just so everybody knows - the iCloud backup for apps, deployed directly to devices, does NOT work:

A real bummer! Might have to decide against device-based app deployment.

https://support.apple.com/en-us/HT205199