你可以做這樣的事情(注意,這個返回的標識沒有被綁定到該設備,並會改變如果用戶刪除並重新安裝應用程序):
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"];
}
}
這將生成標識符pre-iOS-6並將其存儲爲默認值,以便它通常具有相同的標識符。如果您有一個鑰匙串組和一組需要使用該標識符的應用程序,與identifierForVendor
類似,您可以將其存儲在鑰匙串中而不是用戶默認值。
除蘋果公司拒絕任何調用'uniqueIdentifier'的應用程序的細微小細節外。 – rmaddy
@Midhun,我已經完成了這些步驟,Apple仍然會檢查它是否包含「uniqueIdentifier」。那麼如何才能使iOS版本低於6.0 –
@rmaddy:你是對的。所以最好的方法是使用'CFUUIDCreate()' –