| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- //
- // JDUUID.m
- // JasonDevelop
- //
- // Created by Jason Lee on 3/9/15.
- // Copyright (c) 2015 JasonDevelop. All rights reserved.
- //
- #import "JDUUID.h"
- #import "KeychainItemWrapper.h"
- @interface JDUUID () {
- KeychainItemWrapper *_keychainItemWrapper;
- }
- @end
- @implementation JDUUID
- //처음에 UUID를 KeyChain에서 불러오는데 nil이라면 UUID를 생성해서 KeyChain에 저장한다.
- //저장 후에 다시 함수를 호출 하면 저장된 값을 리턴한다.
- - (NSString*)getUUID {
-
- NSString *uuid = [_keychainItemWrapper objectForKey:(__bridge id)(kSecAttrAccount)];
- if( uuid == nil || uuid.length == 0) {
- // if there is not UUID in keychain, make UUID and save it.
- CFUUIDRef uuidRef = CFUUIDCreate(NULL);
- CFStringRef uuidStringRef = CFUUIDCreateString(NULL, uuidRef);
- CFRelease(uuidRef);
- uuid = [NSString stringWithString:(__bridge NSString *) uuidStringRef];
- CFRelease(uuidStringRef);
-
- // save UUID in keychain
- [_keychainItemWrapper setObject:uuid forKey:(__bridge id)(kSecAttrAccount)];
- }
-
- return uuid;
- }
- #pragma mark - Singleton
- + (JDUUID *)UUIDHandler {
-
- static JDUUID *_sharedUUIDHandler = nil;
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- _sharedUUIDHandler = [[self alloc] init];
- });
- return _sharedUUIDHandler;
- }
- - (id)init {
- if (self = [super init]) {
-
- //내부 앱에서만 사용할 경우
- _keychainItemWrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"UUID" accessGroup:nil];
-
- // NSString *bundleID = [[NSBundle mainBundle] bundleIdentifier];
- //Keychain Group끼리 공유할 경우
- // _keychainItemWrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"UUID" accessGroup:@"???????.com.yourcompany.GenericKeychainSuite"];
- }
- return self;
- }
- @end
|