관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] DeviceCheck API 사용 방법, 고유한 디바이스 ID (UDID 대체, Device block) 본문

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

https://developer.apple.com/documentation/devicecheck

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

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인지.. 등)

 

* 참고

https://developer.apple.com/videos/play/wwdc2017/702/

https://medium.com/zrealm-ios-dev/ios-%E5%AE%8C%E7%BE%8E%E5%AF%A6%E8%B8%90%E4%B8%80%E6%AC%A1%E6%80%A7%E5%84%AA%E6%83%A0%E6%88%96%E8%A9%A6%E7%94%A8%E7%9A%84%E6%96%B9%E6%B3%95-swift-c5e7e580c341

https://developer.apple.com/documentation/devicecheck

Comments