본문 바로가기
개발/iOS

[iOS] UIDevice identifierForVendor / 기기 식별하기

by lucidmaj7 2023. 3. 22.
728x90
반응형

아이폰 앱 서비스 하면서 사용자가 사용하는 아이폰의 기기를 식별해야할 일이 생길 수 있다. 아이폰마다 불변하는 특정 아이디, 식별자가 있어서 이 식별자를 수집하면 되지 않을까 하는 생각을 할 수 있다. 하지만 이런 사용자의 정보를 함부로 수집할 수 있도록 해준다면 우리의 애플이 아닐 것이다.

다만 애플은 우회적으로, 제한적으로 방법을 제공하고 있다. 

바로 Vendor ID를 제공하는 것이다.

https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor

 

identifierForVendor | Apple Developer Documentation

An alphanumeric string that uniquely identifies a device to the app’s vendor.

developer.apple.com

우선 애플이 이야기하는 Vendor ID가 무엇인지 볼 필요가 있다.

애플은 Vendor ID를 다음과 같이 설명하고 있다.

  • 동일한 장치에서 실행되는, 동일한 공급업체의 앱에 동일한 값을 가진다.(다른 공급업체는 다른 값을 가진다)
  • App Store에서 제공되는 데이터에 따라 결정됨.(엔터프라이즈 앱이나 개발중인 앱은 번들 ID로 결정됨)

즉, A라는 회사가 만든 앱들은 특정 아이폰에서 동일한 Vendor ID를 반환한다는 뜻이다. 그리고 다른 아이폰에서는 이 값이 다르게 나타난다.

 

위 그림과 같이 아이폰1에서 A사 앱의 Vendor ID가 AAAA-AAAA-AAAA이지만 아이폰2에서는 CCCC-CCCC-CCCC이다. 이러한 특징때문에 앱을 서비스하는 회사는 기기를 Vendor ID로 어느정도 특정 지을 수 있는 것이다.

하지만 이 iOS Vendor ID는 다음 조건에서 바뀔 수 있다.

  • 특정 공급사의 앱들이 아이폰에서 모두 삭제되고 그 중 하나 이상을 다시 재설치 되었을 때, Vendor ID는 변경됨.

즉 A사의 앱1, 2, 3이 설치 되어있었는데 1,2,3을 모두 삭제하고 1만 다시 설치한 경우 다른 vendor ID를 갖게된다는 뜻이다.

때문에 Vendor ID는 항상 고정적이지 않으며 변경될 수 있음에 유의해야한다.

iPhone 에서 Vendor ID를 가져오는 예제 (Swift)

guard let vendorID = UIDevice().identifierForVendor else { return }
print("vendorID \(vendorID.uuidString)")
728x90
반응형

댓글