Instance Property

identifierForVendor

An alphanumeric string that uniquely identifies a device to the app’s vendor.

Declaration

var identifierForVendor: UUID? { get }

Discussion

The value of this property is the same for apps that come from the same vendor running on the same device. A different value is returned for apps on the same device that come from different vendors, and for apps on different devices regardless of vendor.

Normally, the vendor is determined by data provided by the App Store. If the app was not installed from the app store (such as enterprise apps and apps still in development), then a vendor identifier is calculated based on the app’s bundle ID. The bundle ID is assumed to be in reverse-DNS format.

  • On iOS 6, the first two components of the bundle ID are used to generate the vendor ID. if the bundle ID only has a single component, then the entire bundle ID is used.

  • On IOS 7, all components of the bundle except for the last component are used to generate the vendor ID. If the bundle ID only has a single component, then the entire bundle ID is used.

Table 1 shows a collection of bundle IDs and which portions of the bundle ID the system uses to calculate the vendor ID.

Table 1

Example bundle identifiers

Bundle ID

iOS 6.x

iOS 7.x

com.example.app1

com.example.app1

com.example.app1

com.example.app2

com.example.app2

com.example.app2

com.example.app.app1

com.example.app.app1

com.example.app.app1

com.example.app.app2

com.example.app.app2

com.example.app.app2

example

example

example

For example, com.example.app1 and com.example.app2 would appear to have the same vendor ID.

If the value is nil, wait and get the value again later. This happens, for example, after the device has been restarted but before the user has unlocked the device.

The value in this property remains the same while the app (or another app from the same vendor) is installed on the iOS device. The value changes when the user deletes all of that vendor’s apps from the device and subsequently reinstalls one or more of them. The value can also change when installing test builds using Xcode or when installing an app on a device using ad-hoc distribution. Therefore, if your app stores the value of this property anywhere, you should gracefully handle situations where the identifier changes.

See Also

Identifying the Device and Operating System

var name: String

The name identifying the device.

var systemName: String

The name of the operating system running on the device represented by the receiver.

var systemVersion: String

The current version of the operating system.

var model: String

The model of the device.

var localizedModel: String

The model of the device as a localized string.

var userInterfaceIdiom: UIUserInterfaceIdiom

The style of interface to use on the current device.