Dev:UIDevice

UIDevice is a singleton class that provides access to some properties of the current device.

As a client to liblockdown
Many important properties can be accessed via. This can be used to bypass higher-level spoofing hacks. One has to use the liblockdown functions in MobileSubstrate initializers because UIKit was not ready at that time.

iPad mode (Wildcat)
iPad (codenamed Wildcat) has a drastically different user interface than iPhone/iPod touch, but all three share the same OS. In UIKit and, this property is heavily used to determine which behavior should be used.

You should check against the public  instead of using this property.

lsdidentifiers (Launch Services Daemon Identifiers)
The identifiers are stored in the following file:

The launch services daemon (lsd) manages this file.

Each lsidentifiers key (except advertising) contains a dictionary using following keys:

It appears that when you install your app to /Applications, LaunchServices fills in the "identifierForVendor Xcode deployed app". However when you actually run your app and access the identifier, it then fills in the "identifierForVendor /Applications app" with a different ID and the app uses that one. This means you can't share the same ID for an app you are developing by both deploying from Xcode and also copying to /Applications.

A way to access the real identifierForVendor within an app launched from /Applications is to give the app the entitlement com.apple.lsapplicationproxy.deviceidentifierforvendor. Then add this:

These identifiers are backed up, however they will change if the user restores their backup to a new device, according to the Apple docs (but not fully verified). A Stack Overflow user has done some testing.