Computer >> 컴퓨터 >  >> 프로그래밍 >> iOS

iOS/iPhone에서 프로그래밍 방식으로 MAC 주소 확인하는 방법

iOS 7.0 이전 버전에서는 기기의 MAC 주소를 손쉽게 가져올 수 있었습니다. 하지만 새로운 iOS 버전부터는 개인정보 보호를 위해 앱이 기기의 MAC 주소에 접근하는 것이 차단되었습니다.

MAC 주소 접근이 차단된 이유

현재 버전의 iOS에서 MAC 주소에 접근하거나 요청하면 항상 02:00:00:00:00:00이라는 고정된 값을 반환합니다. 이는 Apple이 사용자 추적을 방지하고 개인정보를 보호하기 위해 의도적으로 구현한 정책입니다.

대안: identifierForVendor(UUID) 사용하기

앱에서 기기를 고유하게 식별해야 하는 경우, Apple은 MAC 주소 대신 UDID/UUID 사용을 공식적으로 권장합니다. Swift에서는 UIDevice.current.identifierForVendor를 활용할 수 있습니다.

Apple 공식 문서에 따르면, 이 속성의 값은 다음과 같은 특징을 가집니다.

  • 동일한 기기에서 실행되는 동일한 벤더(vendor)의 앱들은 같은 값을 가집니다.
  • 동일한 기기라도 다른 벤더의 앱에는 서로 다른 값이 반환됩니다.
  • 벤더와 무관하게 다른 기기에서는 항상 다른 값이 반환됩니다.

UUID 문자열로 변환하기

UIDevice.current.identifierForVendor?.uuidString을 사용하면 UUID를 문자열 형태로 얻을 수 있습니다.

실제 코드 예제

override func viewDidLoad() {
    super.viewDidLoad()
    print(UIDevice.current.identifierForVendor)
    print(UIDevice.current.identifierForVendor?.uuidString)
}

실행 결과

iPhone 7 Plus의 iOS 12.0 시뮬레이터에서 위 코드를 실행하면 아래와 같은 결과가 출력됩니다.

Optional(1E52E5F9-9385-4269-A2CA-A0B9063DCBA5)
Optional("1E52E5F9-9385-4269-A2CA-A0B9063DCBA5")

이처럼 iOS 7.0 이후에는 MAC 주소 대신 identifierForVendor를 통해 기기를 식별하는 것이 표준적인 방법입니다. 단, 앱을 삭제 후 재설치하면 해당 값이 변경될 수 있으므로, 영구적인 기기 식별이 필요하다면 Keychain 등에 저장하는 방식을 함께 고려하는 것이 좋습니다.