fleet icon indicating copy to clipboard operation
fleet copied to clipboard

Install App Store apps on iOS/iPadOS

Open noahtalerman opened this issue 1 year ago • 8 comments

Goal

User story
As an IT admin,
I want to install apps on my iOS/iPadOS hosts using Apple's Volume Purchasing Program (VPP)
so that I can install software on my conference room iPads and iOS engineers' iPhones.

Context

  • Requestor(s): @noahtalerman
  • Product designer: @rachaelshaw

For reference, here's the macOS story:

  • #18867

Changes

Product

  • [ ] UI changes: TODO
  • [ ] CLI usage changes: TODO
  • [ ] REST API changes: TODO
  • [ ] Permissions changes: TODO
  • [ ] Outdated documentation changes: TODO
  • [ ] Changes to paid features or tiers: TODO

Engineering

  • [ ] Database schema migrations: TODO
  • [ ] Load testing: TODO

ℹ️  Please read this issue carefully and understand it. Pay special attention to UI wireframes, especially "dev notes".

QA

Risk assessment

  • Requires load testing: TODO
  • Risk level: Low / High TODO
  • Risk description: TODO

Manual testing steps

  1. Step 1
  2. Step 2
  3. Step 3

Testing notes

Confirmation

  1. [ ] Engineer (@____): Added comment to user story confirming successful completion of QA.
  2. [ ] QA (@____): Added comment to user story confirming successful completion of QA.

noahtalerman avatar Jun 03 '24 15:06 noahtalerman

@rachaelshaw FYI here's the 1st air guitar we chatted about during our 1:1. Re: get ahead on drafting before you're OOO

Here's the 2nd air guitar:

  • #19448

I moved these to the bottom of the prioritized column.

noahtalerman avatar Jun 03 '24 15:06 noahtalerman

Hey @rachaelshaw heads up, I unassigned you and assigned @marko-lisica to this story.

Plan is for Marko to get a head start on this ahead of next design sprint.

noahtalerman avatar Jun 19 '24 22:06 noahtalerman

@Patagonia121 This one didn't make to estimation. We plan to prioritize this in the next design sprint.

marko-lisica avatar Jun 20 '24 15:06 marko-lisica

TODO: include read-only software tab on host detail page in the designs for this

rachaelshaw avatar Jul 01 '24 19:07 rachaelshaw

Hey @rachaelshaw here's the resources for that a customer shared w/ us re: special app config for the Duo app on iOS:

  • Duo: https://duo.com/docs/trusted-endpoints-jamf#ios-configuration
  • Jamf: https://learn.jamf.com/en-US/bundle/jamf-setup-reset-configuration-guide/page/Managed_App_Configuration_Setup.html

From Duo: Screenshot 2024-07-01 at 4 11 50 PM

It sounds like some App Store apps allow for configuration via XML.

@nonpunctual what other iOS/iPadOS apps have you seen this app configuration XML used for?

Another potentially helpful resource: https://www.appconfig.org/ios.html

cc @marko-lisica

noahtalerman avatar Jul 01 '24 20:07 noahtalerman

@noahtalerman AppConfig is the thing that is probably talked about by Jamf the most for this kind of thing. Also, kiosk-type configs like Zoom / conf room. Envoy is an app that is commonly configured for kiosk mode. Theoretically any profile can be delivered to iOS / iPad devices. AppConfig was kind of pushed as a protocol but i am not sure it's very widely adopted.

nonpunctual avatar Jul 01 '24 22:07 nonpunctual

@nonpunctual Are you saying that we can do the same thing with configuration profiles, instead of using AppConfig? This config for Duo app can be delivered to host via configuration profile?

marko-lisica avatar Jul 02 '24 07:07 marko-lisica

@marko-lisica I don't think AppConfig is required for anything. It's a protocol that an app developer can use to add MDM functions on top of their app. For this particular Duo feature I can't say I know - maybe that is the only way to do it. It varies from app to app & it depends on what the app developer has enabled with AppConfig.

nonpunctual avatar Jul 02 '24 14:07 nonpunctual

@mostlikelee do you know if we can get iOS/iPadOS app vulns from NVD?

rachaelshaw avatar Jul 11 '24 17:07 rachaelshaw

@mostlikelee do you know if we can get iOS/iPadOS app vulns from NVD?

It looks like it. https://nvd.nist.gov/vuln/detail/CVE-2018-0611. iPhone OS vulnerabilities are also available.

mostlikelee avatar Jul 12 '24 20:07 mostlikelee

TODO @noahtalerman specify the GitOps and API changes.

noahtalerman avatar Jul 15 '24 17:07 noahtalerman

Hey team! Please add your planning poker estimate with Zenhub @getvictor @jacobshandling @lucasmrod @mostlikelee @RachelElysia

sharon-fdm avatar Jul 15 '24 17:07 sharon-fdm

TODO @noahtalerman. Add API changes and make sure there are no GitOps changes (I think there are no changes from what the MDM team worked on)

noahtalerman avatar Jul 15 '24 17:07 noahtalerman

@noahtalerman Re: our discussion about iOS vs iPadOS versions. Here's something I found and I'll throw it here so we don't forget about it.

Currently, I'm not sure if there are App Store apps that have different versions for iOS and iPad. I wasn't able to find an example.

I found this repo and seems they use different user agent when sending request to Apple's iTunes lookup API.

Maybe that's way on how to get iPad specific metadata.

marko-lisica avatar Jul 17 '24 10:07 marko-lisica

I'm not sure if there are App Store apps that have different versions for iOS and iPad. I wasn't able to find an example.

@marko-lisica thanks! So, our current understand is that apps have the same versions for iOS and iPadOS.

I think this doesn't impact the way we designed the feature, right? We still want IT admins to be able to add an app store app for iOS or iPadOS:

Screenshot 2024-07-17 at 8 23 52 AM

Please jump in if you think that's the wrong decision!

noahtalerman avatar Jul 17 '24 15:07 noahtalerman

Hey @mostlikelee and @getvictor heads up that we want to detect vulnerabilities for iOS/iPadOS apps if possible.

From Figma here: Screenshot 2024-07-17 at 8 25 07 AM

Can we get these CVEs from NVD?

I think I forgot to bring this up at standup. Sorry about that.

noahtalerman avatar Jul 17 '24 15:07 noahtalerman

Hey @getvictor and @jacobshandling heads up that I opened a draft PR with API changes for this story here: https://github.com/fleetdm/fleet/pull/20598

heads up that we want to detect vulnerabilities for iOS/iPadOS apps if possible. Can we get these CVEs from NVD?

I think the CVEs for iOS/iPadOS question is still unresolved. cc @mostlikelee

If y'all have any questions/thoughts/concerns please schedule 30 mins w/ me! Thanks.

noahtalerman avatar Jul 18 '24 21:07 noahtalerman

@marko-lisica @noahtalerman there are are apps that are iPad only or iPhone only. Maybe not a lot of them. These are old docs but they spell out how you would define an iPhone-only or iPad-only app

https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/uid/TP40009252-SW3

& it has to do with the capabilities defined, i.e., if your app has no telephony features, etc... Hope this make sense. I can try to find examples of iPad only / iPhone only apps. I used to know some that we distributed as demos but I don't remember them.

nonpunctual avatar Jul 18 '24 22:07 nonpunctual

Hey @nonpunctual, an example of iPad only app is Procreate. They also have iOS only app.

Why this discussion started is because we're using iTunes API and there's no way to request metadata for iPad app when app is multiplatform (for ex. if you open Canva app in App Store they support for macOS, iOS, and iPad under the same app). iTunes API by default returns iOS data and there's a param to get macOS app metadata, but no param for iPadOS.

Usually, iOS and iPad apps have the same version, but my concern is that they might have different versions. In this case, we might display the wrong version in Fleet UI/API.

When it comes to the updates for App Store apps in the future we can rally on MDM protocol and not any external API, since there's a command to list managed apps. The command returns a list of installed VPP apps and has the flag HasUpdateAvailable which means that we can repeat install command to install latest version.

Additionally, we might need to use iTunes API occasionally to check what's the current version so we can display up-to-date info in the Software details page (see screenshot) Screenshot 2024-07-19 at 11 23 47

cc @noahtalerman

marko-lisica avatar Jul 19 '24 09:07 marko-lisica

Hey @marko-lisica do you know of an example iOS/iPadOS app that's iOS only? What about iPadOS only?

Chatting w/ @getvictor and Victor told me that we want to be able to test these scenarios.

noahtalerman avatar Jul 23 '24 18:07 noahtalerman

Yup, Procreate was one of our demo apps on pretty much every build.

nonpunctual avatar Jul 23 '24 19:07 nonpunctual

FYI @getvictor ^

iPadOS only: https://apps.apple.com/us/app/procreate/id425073498

Thanks Brock!

noahtalerman avatar Jul 23 '24 20:07 noahtalerman

Hey @jacobshandling and @marko-lisica heads up, I got some good feedback from Mike M and we want to make the following UI tweaks to the "Add software" modal:

  • Removed header and added footer (highlighted in screenshot below) and link so that IT admins who stumble upon this feature for the first time, when apps are already present, know where these apps are coming from and where to go to add more.
  • No client-side pagination. Why? Users have at most 40 apps (not huge). If we paginate then they can't CMD+F to search.

Screenshot 2024-07-23 at 5 49 49 PM

I brought in the error and empty states to Figma and illustrated the same changes in those screens.

Please let me know if you have any questions!

noahtalerman avatar Jul 23 '24 21:07 noahtalerman

@noahtalerman looks good, thanks! Since we'll display all apps at once, do we want to handle vertical overflow via a scrollbar on the list itself (i.e., maintain the height of the modal), or let the modal extend vertically and handle scrolling with the viewport scroll?

jacobshandling avatar Jul 23 '24 22:07 jacobshandling

@noahtalerman Procreate has both iPad and iPhone only apps

iPad: https://apps.apple.com/us/app/procreate/id425073498 iPhone: https://apps.apple.com/us/app/procreate-pocket/id916366645

marko-lisica avatar Jul 24 '24 09:07 marko-lisica

Since we'll display all apps at once, do we want to handle vertical overflow via a scrollbar on the list itself (i.e., maintain the height of the modal), or let the modal extend vertically and handle scrolling with the viewport scroll?

Hey @jacobshandling, good call out. I think we can let the modal extend vertically in this pass (similar to Policies > Manage automations modal).

I think the future we might make improve this and either add a scrollbar or pagination + search box.

noahtalerman avatar Jul 24 '24 16:07 noahtalerman

@marko-lisica Can you add an iPhone-only app to our VPP so I can test it during development? Let me know which one it is. Procreate apps cost money, so maybe something else is free?

I already see Calculator - Pad Edition as an iPad-only app.

getvictor avatar Jul 28 '24 19:07 getvictor

Hey @getvictor, I added these:

  • iPad only: https://apps.apple.com/us/app/calculator-pad-edition/id685860762
  • iPhone only: https://apps.apple.com/us/app/fitbit-health-fitness/id462638897

marko-lisica avatar Jul 29 '24 07:07 marko-lisica

@marko-lisica Fitbit also shows up on my iPad. Is there another iPhone-only app?

getvictor avatar Jul 29 '24 08:07 getvictor

@marko-lisica @noahtalerman This story requires GitOps changes -- the same app_store_id may be used for ios and ipad apps, so we need to add platform option (darwin,ios,ipados). We can default to darwin

getvictor avatar Jul 29 '24 08:07 getvictor