[iOS] IDFA, IDFV


Intro

요즘 시대는 “데이터”가 커다란 자산이다. 그 데이터 중에서도, PII(Personally Identifiable Information)는 무척이나 중요하다. 개인을 증빙 할 수 있을 뿐만 아니라, 개인의 삶 자체를 내다보는 것도 가능하기 때문이다.

그만큼, 개인을 식별할 수 있는 정보는 무척이나 민감해서, 법적으로 보호되고 있다. 예를 들면, 이러한 PII는 저장해서는 안되고, 꼭 필요한 경우에만 hash하여 저장해야한다. 그리고 전송시에는 당연하게도 SSL 등의 통신을 이용해서 전송하여, 누출가능성을 최대한 낮춰야한다.

물론, 개인의 동의를 받는 것은 당연지사다.

이러한 개인정보의 중요성이 높아지면서인지, iOS 의 [[UIDevice cuurrent] uniqueIdenfier]Deprecated 되었다. 이와 비슷하게, iOS7 에서도 Mac Addresses 는 무용지물이 되었다.

아래는 원문이다.

//iOS7 !!

MAC Addresses in iOS 7
Auguest 22, 2013
If your apps use the MAC address to identify an iOS device, the system will return the same static value for all devices running iOS 7. Please update your apps to use the identifierForVendor property of UIDevice. If you need an identifier for advertising purposes, use the advertisingIdentifier property of ASIdentifierManager.

여기 원문에 나오는 것처럼, MAC address 대신(네트워크 인터페이스에 할당된 고유 식별자. 네트워크 주소. 사용자 혹은 기기를 유일하게 식별 할 수 있는 식별자.) IDFV 혹은 IDFA를 사용하라는 지시를, 우리(애플의 노예)들은 충실히 따라야할 것이다.

IDFA, IDFV

IDFA = IDentifier For Advertisers (AKA IFA | IDA) “광고 식별자”라고 불리우기도 한다.

IDFV = IDentifier For Vendor (요건 뭐라고 불리우는지 잘모르겠다, 그냥 IDFV…, 굳이하자면 벤더 식별자?, bundleID 의 depth2 까지만 같다. (라고 알고있다.))

IDFA

IDFA는 우선 벤더(bundleID)와 상관없이, 동일한 ID를 반환한다.

그렇다면, 이게 가장 uniqueIdentifier(or MAC Address))와 비슷한 느낌이지 않을까?싶기도 할것인데, 애플 가이드 문서에서는 해당 IDFA를 광고의 목적에만 사용하라고 가이드하고 있다. (이말인즉슨, 리젝이라는 카드로 우리를 협박하는 것!!)

공장초기화 시에만 재설정되니, 이 얼마나 좋은가 :)

IDFA를 얻어오려면, ADSupport.framework를 사용해야한다.

NSString *idfa = [[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString;

IDFV

IDFV 는 말그대로, 같은 벤더사까리는 (bundleID의 호스트부분까지? 동일한 !) 동일한 값을 리턴한다.

즉, com.boomclap.A 라는 앱을 설치해서, IDFV를 뽑아서, “ABC”라는 값이 나왔다면, com.boomclap.B 라는 앱을 설치해서 IDFV를 뽑아도, “ABC” 라는 값이 나온다는 말이다.

그럼 앱을 모두 삭제하고, 다시 com.boomclap.A 를 깔아서 IDFV를 발급받으면 어떨까? 그러면 새로운 string이 리턴되는 것을 볼 수 있다.

NSString *idfv = [[[UIDevice currentDevice] identifierForVendor] UUIIDString];

맺으며

시간이 갈수록 개인정보는 너무너무나도 중요해지고 있다. 개인정보 자체가 \(\) 돈이자 권력이기 때문이다. 개인정보를 얻기위해서는 “식별”을 할 수 있어야하고, 그 식별을 위한 키가 바로 IDFV, IDFA가 될 것이다.

Android에서도 AndoridID / GoogleAdId 등을 사용하여 사용자 식별을 하고 있는데, 마찬가지로 개인정보에 대한 이슈가 민감하다.

개인정보를 다룰 때의 “벽”은 높아지면 높아졌지, 낮아지지는 않을 것이다.