When you create a project, you use a bundle ID to identify a specific app, and an app ID to match that bundle ID. The app ID is used as part of a provisioning profile that authorizes an app to launch.
A bundle ID is a string used to precisely identify a single app. Bundle IDs are not used just during the development process; when your app is installed on a device, it is also used by the operating system. For example, the preferences system uses this string to identify the app for which a given preference applies. In contrast, Launch Services uses the bundle ID to locate an app capable of opening a particular file, using the first app it finds with the given identifier. And, in iOS, the bundle ID is used in validating the app’s signature.
The bundle ID string must be a uniform type identifier (UTI) that contains only alphanumeric (A-Z,a-z,0-9), hyphen (-), and period (.) characters. The string should be in reverse-DNS format. For example, if your company’s domain is Ajax.com and you create an app named Hello, you could assign the string com.Ajax.Hello as your app’s bundle ID.
- The bundle ID itself is stored in the information property list file (Info.plist) inside your project. This file is later copied into your app’s bundle when you build the project
- When you are ready to publish an app, you use the bundle ID to identify the app in iTunes Connect. The App Store submission process correlates the bundle ID from the app you submit with the data you provide in iTunes Connect
- When developing your app, you need a development provisioning profile with an app ID that is compatible with the app’s bundle ID
An app ID is a string that defines both a keychain identity and a set of possible applications. An app ID’s primary use is as part of a provisioning profile; it specifies which apps are authorized by the profile to be signed and launched. An app ID is a string containing two parts, a bundle seed ID and a bundle ID search string, with a period (.) separating the two parts. Each part of an app ID has different and important uses for your app.
The bundle seed ID is a unique 10-character string generated by Apple. The bundle seed ID is what associates an app ID with a specific team. Apps that share the same bundle seed ID can also share keychain data, such as usernames and passwords. Each development team is assigned a specific seed ID, known as the team ID. You should almost always use the team ID in any new apps you create; if you are doing Mac OS X development, using the team ID is your only option for the bundle seed ID, and it is provided automatically by the tools.
The bundle ID search string is matched against the bundle ID of an app. An app ID is considered to be compatible with the bundle ID if the search string successfully matches the bundle ID. The bundle ID search string also determines the type of an app ID. Two kinds of app IDs are supported: wildcard app IDs and explicit app IDs.
An explicit app ID uses a search string that exactly matches the bundle ID of an app you are building. Because the exact bundle ID is specified, the app ID matches only that app.