iOS 응용 (swift)
[iOS - swift] DeviceCheck API 사용 방법, 고유한 디바이스 ID (UDID 대체, Device block)
jake-kim
2022. 1. 17. 22:17
UDID
- Unique Device ID
- iOS 6+ 부터 개발자는 UDID 획득 불가
- 컴파일 후 실행 파일로 만드는 lingking 단계에서 IP주소를 통해 다시 링킹하는 해킹 방법이 있으므로, 소스코드에서 기기의 UDID접근은 위험한 것이므로, 애플은 DeviceCheck API 를 2017년 WWDC에서 제공
- 디바이스 A에서 사용자가 어뷰징을하여 정지를 먹은 경우, 동일한 디바이스로 다른 계정을 새로 생성해도 정지를 먹도록 하고싶은 경우 사용
DeviceCheck
- 고유한 디바이스 식별을 가능하게 해주는 API

- 애플 클라우드에서 2bit의 저장공간을 제공하여, 디바이스의 상태를 기록할 수 있는 장점 존재
- 앱을 재설치, 아이클라우드 계정 변경, 공장 초기화해도 2비트 값 유지

2bit 사용 예시 - backend에서 받아서 사용)
- 앱을 재설치, 아이클라우드 계정 변경, 공장 초기화해도 2비트 값 유지
DeviceCheck 사용 흐름
- iOS App에서 DeviceCheck 모듈안의 DCDevice.current.generateToken { data, error in ...}로 token data 획득
(해당 token 값은 매번 변경)
DCDevice.current.generateToken { dataData, error in guard let dataData = dataData else { print("token is empty") return } let tokenString = dataData.base64EncodedString() print(tokenString) // AgAAAHXbhcMDrOhwYgRYbuTll...+4V94A== } - token data를 post로 Backend에 데이터 생성
- backend에서 token data를 apple server에 전달
- apple에서 2bit 응답값과 상태를 방출 -> backend에서 보관 및 처리, iOS App에서 필요하면 상태 전달
(해당 디바이스가 blacklist인지.. 등)

* 참고