A bundle ID uniquely identifies a single app throughout the system. The bundle ID string must be a uniform type identifier (UTI) that contains only alphanumeric characters (A-Z,a-z,0-9)
, hyphen (-), and period (.). The string should be in reverse-DNS format. However, unlike domain names, bundle IDs are case sensitive.
A bundle ID is used during the development process to provision devices and by the operating system when the app is distributed to users. For example, Game Center and In-App Purchase use a bundle ID to identify your app when using these app services. The preferences system uses this string to identify the app for which a given preference applies. Similarly, 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. The bundle ID is also used to validate an app’s signature.
During the development process, you use an app’s bundle ID in many different places to identify the app.
Specifically, the bundle ID is located and used as follows:
In the Xcode project, the bundle ID is stored in the information property list file (Info.plist
). This file is later copied into your app’s bundle when you build the project.
In iTunes Connect, you enter the bundle ID to identify your app. After your first build is uploaded to iTunes Connect, you can’t change your bundle ID or delete the associated explicit App ID.
In your developer account, Xcode creates an App ID that matches the app’s bundle ID. If the App ID is an explicit App ID, it exactly matches the bundle ID.
In iCloud, the container IDs you specify in your Xcode project are based on the bundle IDs of one or more apps.
Important: A macOS app can’t share the same bundle ID with other types of apps, such as iOS and tvOS apps.