App IDs provide metadata and capabilities for an iOS application.
The app is uniquely identified in the app store via its Bundle ID
The App ID Prefix is pre-pended to the Bundle ID to allow the app to be searchable and should be set to the Team ID (allowing apps developed by the Team to be easily identified)
- Explicit App IDs: are used for a single app, and required when distributing to the App Store
- Wildcard App IDS: are used for a set of apps and cannot be distributed to the App Store
Overview and steps for creating an App ID are here
NOTE: capabilities don't have to be known up front when creating the initial app and can be added at a later stage
Further info regarding configuring specifics of the App ID follow:
- Name: the app name
- Prefix: makes up the first part of the search string for an app, in all cases this should be the TeamID
- Bundle ID: Is a globally unique identifier for the app in the App Store: best practice is to use a reverse-domain style string: eg. com.companyname.appname
- Wildcard Bundle ID can only be used for apps which have don't have any capabilities
- App Capabilities:
Certificates are required for iOS Development overview detailed here
- Developer Certificates: belong to an individual, allowing them to run and develop apps
- Distribution Certificates: belong to the team, allowing them to distribute an app for testing, app store or the enterprise
- APNs Auth Key: to enable push notifications
Apple developer certificates are necessary for iOS15 onward, the earlier iOS certificate format is obsolete.
Provisioning profiles are required to deploy an app to a iOS device, Mac or to the App Store. They link a signing certificate to identifie the publisher to the App ID and depending a list of UUIds the app can be installed on.
More details regarding Distribution can be found here with methods below covered here:
Superficially developer and ad hoc distribution profiles appear the same and are outlined here, however the signing requirements and intent are different.
- Developer: for development, only the developer certificates added to this profile will be able to sign the app manually via XCode, detailed here.
- Ad Hoc: for testing with registered devices within the organization. It requires a Distribution Certificate and does not require XCode detailed here
- App Store: for TestFlight or AppStore distribution detailed here
- Enterprise/In House: for deployment of Enterprise Apps detailed, they here. Manual deployment of the app (ie not by MDM) will require the user to trust the organization as outlined here