您可以执行以下操作(请注意,此返回的标识符未绑定到设备,并且如果用户删除并重新安装应用程序会更改):
NSString* uniqueIdentifier = nil;
if( [UIDevice instancesRespondToSelector:@selector(identifierForVendor)] ) {
// iOS 6+
uniqueIdentifier = [[[UIDevice currentDevice] identifierForVendor] UUIDString];
} else {
// before iOS 6, so just generate an identifier and store it
uniqueIdentifier = [[NSUserDefaults standardUserDefaults] objectForKey:@"identiferForVendor"];
if( !uniqueIdentifier ) {
CFUUIDRef uuid = CFUUIDCreate(NULL);
uniqueIdentifier = (__bridge_transfer NSString*)CFUUIDCreateString(NULL, uuid);
CFRelease(uuid);
[[NSUserDefaults standardUserDefaults] setObject:uniqueIdentifier forKey:@"identifierForVendor"];
}
}
这将在 iOS-6 之前生成一个标识符并将其存储在默认值中,以便它通常是相同的标识符。如果您有一个钥匙串组和一套应用程序需要以与 类似的方式使用标识符identifierForVendor
,您可以将其存储在钥匙串中而不是用户默认值中。