본문 바로가기

프로그래밍/iOS

[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];

 

를 통해서 값을 얻어오면 된다.

 

출처 : http://jinmanp.tistory.com/entry/