[ios] uuid 얻어오기
라이트 버전을 배포하거나 할 때
기기 고유의 값이 필요할 때가 있다.
- ios5이전에서는
[[UIDevice currentDevice] uniqueIdentifier];
를 사용하면 되었으나 ios5이후 deprecated되었다.
- 이를 대체하기 위해서 apple은 uuid를 제공한다.
이를 사용하기 위해서는
CFUUIDRef uuid=CFUUIDCreate(kCFAllocatorDefault);
CFStringRef UUIDRef=CFUUIDCreateString(kCFAllocatorDefault, uuid);
NSString* string=[NSString stringWithString:(NSString*)UUIDRef];
CFRelease(uuid);
CFRelease(UUIDRef);
위와 같이 string으로 uuid를 받아오면 되지만
생성할 때 마다 계속 다른 값이 나온다.
따라서 이를 방지하기 위해 NSUserDefaults를 이용하여 초기값을 저장하고
값이 있으면 값을 불러오고, 값이 없으면 값을 생성하는 코드를 추가한다.
if([[NSUserDefaults standardUserDefaults]stringForKey:@"uuid"]==NULL) //값이 없으면
{
//uuid받아오기
CFUUIDRef uuid=CFUUIDCreate(kCFAllocatorDefault);
CFStringRef UUIDRef=CFUUIDCreateString(kCFAllocatorDefault, uuid);
NSString* string=[NSString stringWithString:(NSString*)UUIDRef];
CFRelease(uuid);
CFRelease(UUIDRef);
//uuid값 string으로 저장
[[NSUserDefaults standardUserDefaults]setObject:string forKey:@"uuid"];
}
NSString* string=[[NSUserDefaults standardUserDefaults]stringForKey:@"uuid"];//저장한 값 받아오기
후에 stirng변수를 사용하면 된다.
- iOS6이후에 고유한 값을 사용하고 싶다면
NSString* string = (NSString*) [[UIDevice currentDevice] identifierForVendor];
를 통해서 값을 얻어오면 된다.