What is the difference between the app ID and the bundle ID? Where is the app ID in the Xcode project?
In the pList file, there is a bundle ID of the form com.mycompany.myapp, but Apple also provides an app ID on the developer portal.
Thus, basically, what is the use of the bundle ID? Where can we find the app ID in the Xcode project?
Solution 1:
Answers to OP Questions
What is the difference between the app ID and the bundle ID?
Because most people think of the App ID as a string, they think it is interchangeable with Bundle ID. It appears this way because once the App ID is created in Member Center you only ever use the App ID Prefix which matches the Bundle ID of the Application Bundle
Where is the app ID in the Xcode project?
You don't find the App ID in Xcode. It is an object (not just a string) in Member Center. Xcode is where the Bundle ID is found. It is specified when creating a new project. (screenshot below) Each Target in a project will have a unique Bundle ID. It can be found/changed by selecting the project in the Project Navigator the choosing the Target and either General or Info from the Jump Bar.
The Xcode interface is described here or here (depending on how Apple is feeling that day).
What is the use of the bundle ID?
It uniquely defines each App. It is specified in Xcode. A single Xcode project can have multiple Targets and therefore output multiple apps. A common use case for this is an app that has both lite/free and pro/full versions or is branded multiple ways.
.
Definitions
-
App ID
Think of this as an object in Member Center with lots of metadata including:
- App ID Description
- App ID Prefix
- App ID Suffix
- App Services
-
App ID Description
Alphanumeric plus spaces
Sometimes you are shown this instead of the App ID, or a dropdown is sorted by this App ID
(I always make this the same as the App ID with the dots changed to spaces)
-
App ID Prefix
Select from a list of available hashes in the Team ID format (see below)
You pretty much always want to select the one labeled "(Team ID)"
-
App ID Suffix
A reverse-domain name style string
This must match the Bundle ID specified in Xcode
-
Explicit App ID
Describes an App ID with an App ID Suffix that contains no wildcards
Can only be associated with a single app (by exactly matching a Bundle ID)
Compatible with all App Services
-
Wildcard App ID
Describes an App ID with an App ID Suffix that ends with an asterisk
Can be associated with multiple apps (matched similar to CLI/bash shell wildcard matching)
Not compatible with Game Center, In-App Purchase, or Push Notifications App Services
-
App Services
A combination of
- Data Protection
- Game Center
- iCloud
- In-App Purchase
- Inter-App Audio
- Passbook
- Push Notifications
-
Team ID
A 10 character alphanumeric hash
Unique to every Developer Account (as in the account that costs $99/yr, not every developer on the account)
-
Apple ID
A unique integer assigned by Apple when an app is first created in iTunes Connect.
-
Bundle ID
A reverse-domain name style string
Defined in Xcode
Uniquely identifies an Application Bundle on a device or simulator
Must have a matching App ID registered with Apple in order to deploy
Used to distinguish app updates vs. new apps
-
Application Bundle
The result of the Build process in Xcode. Though it has an extention of .ipa it is a zip file. The content is a very specific directory structure and holds everything the App needs. It looks like someone took a Mac .app file from /Applications, put in a directory named Payload, zipped it, then change the extension.
-
Target
Every Xcode project has at least 1 target. Each target specifies an app that can be built from the project.
-
SKU
Apple allows you to store a Stock Keeping Unit string (alphanumeric, cannot have spaces) for each app in iTunes Connect. Apple doesn't do anything with this except display it on reports generated for your record keeping.
.
Create Xcode iOS Project dialog in Xcode
.
Create App ID page in Member Center
.
App Information page in iTunes Connect
Solution 2:
Bundle ID is the identifier of an App, but App ID is not. App ID is the connection between App and provisioning profile.
From "About Bundle IDs" section in here, you can see, "A bundle ID precisely identifies a single app".
And from here, you can see, "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.".
App ID has 2 parts: "bundle seed ID" and "bundle ID search string". Bundle seed ID makes Apps share keychain data, that is to say, it's the key chain entry of Apps which have the same bundle seed ID. Bundle ID search string defines how many Apps are covered by this App ID. If you use a Wildcard App ID, that means many Apps will be authorized by the provisioning profile associated with this App ID. For more details please refer to here.
Solution 3:
Simply, A bundle ID precisely identifies a single app. A bundle ID is used during the development process to provision devices and by the operating system when the app is distributed to customers.
During the development process, you use an app’s bundle ID in many different places to identify the app.
Whereas, An App ID is a two-part string used to identify one or more apps from a single development team.
The Team ID is supplied by Apple and is unique to a specific development team, while the bundle ID search string is supplied by you to match either the bundle ID of a single app or a set of bundle IDs for a group of your apps.
There are two types of App IDs: an explicit App ID, used for a single app, and wildcard App IDs, used for a set of apps.
sources: Bundle ID , APP ID
Solution 4:
Multiple apps can share the same App ID. The App ID does not uniquely identify an application.
An App ID is a two-part string used to identify one or more apps from a single development team
https://developer.apple.com/library/content/documentation/General/Conceptual/DevPedia-CocoaCore/AppID.html
The ID that you see in iTunes Connect, which is unique across apps, is known as the application's Apple ID. I apologize for the confusion because no one at Apple will.