iOSUUID (Universally Unique Identifier)

Remarks

To save the UUID we can use SSKeychainUtility. Example can be found on Github page

Generating UUID

Random UUID

Swift

func randomUUID() -> NSString{
    return NSUUID.UUID().UUIDString()
}

Objective-C

+ (NSString *)randomUUID {
    if(NSClassFromString(@"NSUUID")) { // only available in iOS >= 6.0
        return [[NSUUID UUID] UUIDString];
    }
    CFUUIDRef uuidRef = CFUUIDCreate(kCFAllocatorDefault);
    CFStringRef cfuuid = CFUUIDCreateString(kCFAllocatorDefault, uuidRef);
    CFRelease(uuidRef);
    NSString *uuid = [((__bridge NSString *) cfuuid) copy];
    CFRelease(cfuuid);
    return uuid;
}

Identifier for vendor

iOS 6

Within a single line, we can get an UUID like below:

Swift

let UDIDString = UIDevice.currentDevice().identifierForVendor?.UUIDString

Objective-C

NSString *UDIDString = [[[UIDevice currentDevice] identifierForVendor] UUIDString];

The identifierForVendor is an unique identifier that stays the same for every app of a single vendor on a single device, unless all of the vendor's apps are deleted from this device. See Apple's documentation about when this UUID changes.

Apple's IFA vs. IFV (Apple Identifier for Advertisers vs. Identifier for Vendors)

  • You can use the IFA for measuring ad clicks and the IFV for measuring app installs.
  • IFA has built-in privacy mechanisms that make it perfect for advertising. In contrast, the IFV is for developers to use internally to measure users who install their apps.

IFA

  • ASIdentifierManager class provides
    • advertisingIdentifier: UUID: An alphanumeric string unique to each device, used only for serving advertisements.

    • isAdvertisingTrackingEnabled: A Boolean value that indicates whether the user has limited ad tracking.

IFV

  • ASIdentifierManager class provides
    • identifierForVendor: UUID: An alphanumeric string that uniquely identifies a device to the app’s vendor.

Find your device IFA and IFV here.

Create UUID String for iOS devices

Here we can create UUID String with in one line.

Represents UUID strings, which can be used to uniquely identify types, interfaces, and other items.

Swift 3.0

print(UUID().uuidString)

It is very useful for identify multiple devices with unique id.