iOS 디바이스의 고유 ID

대부분의 서비스들은 자체 회원 가입 기능을 구현하여 유저들을 구분한다. 

그러나 그렇지 않은 경우 어떻게 유저들을 구분할 수 있을까?

여기에 대한 해결책으로 자주 쓰이는 것이 UUID와 keyChain을 이용한 방법이다.

원래 apple에서는 iOS 디바이스 마다의 고유 값인 udid를 제공했다. 하지만 어느 어플을 쓰더라도 udid는 같다는 문제 때문에 애플은 iOS5 버전부터 더 이상 udid를 제공하지 않기로 했다.

여기에 대응해 uuid를 생성, 키체인에 저장하는 방식으로 사람들은 문제를 해결 했다. 물론 이 방법이 완벽하지는 않다만, 공장 초기화를 하지 않는 이상 uuid가 지워지지 않는 안전한 방법이므로 충분히 사용할 만하다 라고 생각한다. 그리고 Uuid가 겹칠 확률이 궁금한 사람이 있다면 그럴 확률은 초당 10억 개의 Uuid를 85년 동안 생성해야 중복될 확률이 있다(2,710,000,000,000,000,000분의 1)라는 것 정도만 알아두자.

 

UUID + KeyChain

swift 언어를 이용하여 UUID를 생성하고 그것을 keyChain에 저장해보자.

 

1. 가장 먼저 해야할 것은 라이브러리를 설치하는 것. podfile이나 carthage를 이용하자.

  • Podfile
    pod 'TAKUUID'
    or 
    pod 'TAKUUID':git =>
    'https://github.com/taka0125/TAKUUID.git'
  • Carthage
    github "taka0125/TAKUUID"

 

2. 프로젝트.xcworkspace 파일을 열고, 프로젝트 설정 창에서 Capability를 추가한다.

아래의 순서대로 따라하자.

 

3. UUID를 생성하고 출력해본다.

필자는 아래와 같이 코드를 작성하여 UUID를 생성하고 생성한 UUID를 화면에 표시했다.

import TAKUUID

class ViewController: UIViewController {

    @IBOutlet weak var uuidInTheKeychain: UILabel!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        initUUID()
    }
    
    private func initUUID() {
        TAKUUIDStorage.sharedInstance().migrate()
        uuidInTheKeychain.text = TAKUUIDStorage.sharedInstance().findOrCreate()
    }
  

}

 

결과

 

1. 최초 실행

 

2. 앱 삭제

 

3. 다시 설치 후 실행

 

확인 결과, 키체인에 저장해둔 UUID는 앱을 삭제했다가 다시 설치해도 유지된다.

 

참고

- https://github.com/taka0125/TAKUUID

- https://blog.naver.com/PostView.naver?blogId=writer0713&logNo=221040662262&redirect=Dlog&widgetTypeCall=true&directAccess=false

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기
// custom