개요

에어브릿지를 연동하면서, IDFA, IDFV, SKAN(SKAdNetwork Conversion Value Rule)에 대한 정보를 좀 찾아보게됨.

이 문서를 정리하면서 애플 정책에 대해 더 주의깊게 살펴보고자함.

IDFA 란?

쉽게 말해서 변경 할 수 있는 기기값이다. UDID는 변경 불가능한 기기값이라.. 변경 가능한 애로 쓰고 싶었나봄. i) 번역하면 좀 이상하긴함 IDFA(IDentifier For Advertiser) == 광고주 식별자

더 설명하자면 어떤 앱을 설치해도 IDFA는 UDID 형식으로 동일한 값을 출력함. 앱을 삭제 후 다시 설치하여도 동일한 IDFA값을 출력함. 그래서 디바이스를 식별 할 수 있게 되는것임.

애플에선 IDFA조차 개인정보야! 라고 생각해서 14.5 iOS 이상부터 ATT(App Tracking Transparency)라는 IDFA를 받을 수 있는 권한 허용 팝업을 받기 시작함.

ii) ATT도 번역하면 ‘앱 추적 투명성’으로 말이 이상함.

즉, ATT는 디바이스의 id를 써도 되겠니? 라는 뜻임.

IDFV 란?

IDFV는 IDFA를 받을 필요가 없을 경우가 있음. 앱 삭제 후 다시 설치했을 때 마다 랜덤한 유니크 id를 받고 싶을때가 있을거아님? 그때 쓰는거임. 당연히 앱 설치 후 유니크한 id를 받았을 경우 앱삭제 시 까지 변하지 않음. 쉽게 말하면 앱삭제 마다 번들 값(com.example.app1_) 기준으로 변경되는 고유 값임.

애플정책에선 IDFV 쓸 경우 알아서 법률에 잘 맞춰라~ 하는데 솔직히 쓸 일이 그닥 없을 것 같긴함.

공식문서: https://developer.apple.com/app-store/user-privacy-and-data-use/

IDFA를 받기 위해, ATT 팝업을 안띄워도 되는 경우

이것 때문에 문서작성을 하는거긴함. 번역이 너무 잘못되어있음.

추적이 적용되지 않습니다 == ATT팝업을 안띄워도 IDFA값을 써도 됩니다 임. appstore 번역이 너무 후짐. 근데 3가지에 해당하는 경우가 있을까 싶기도함.

기기ID.png
기기ID
ATT팝업권한사례.png
ATT팝업권한사례

SKAN (전환가치)

에어브릿지 iOS 세팅.png
에어브릿지 iOS 세팅.png

에어브릿지 iOS 세팅(bundle, Apple store key 세팅) 후, SKAdNetwork 설정필요 라는 문구가 출력되어서 찾아보는 중임.

애플 프레임워크 SKAdNetwork 프레임워크를 제공하고 있음.

앱 내 사용자 이벤트를 광고 네트워크(구글 애드몹, 페이스북 광고)로 전달해주는 프레임워크임. (에어브릿즈는 앱서버, 광고 네트워크를 대신한다고 볼 수 있음.)

SKAN을 사용하는 이유는 변경된 iOS 버전 14.0 이상 디바이스의 IDFA 수집 방식과 무관하게 독자적인 방식으로 앱 이벤트를 측정 할 수 있어서임.

[SKAdNetwork 이벤트 예시]

  • 이벤트 예시 1. 인앱 구매: 이벤트: 사용자가 인앱 구매를 합니다. 전환 가치: 5 2. 레벨 완료: 이벤트: 사용자가 게임의 레벨을 성공적으로 완료했습니다. 전환 가치: 10 3. 구독 활성화: 이벤트: 사용자가 프리미엄 구독을 활성화합니다. 전환 가치: 20 4. 튜토리얼 완료: 이벤트: 사용자가 앱 튜토리얼을 완료했습니다. 전환 가치: 3 5. 소셜 공유: 이벤트: 사용자가 앱의 콘텐츠를 소셜 미디어에 공유합니다. 전환 가치: 15 6. 업적 잠금 해제: 이벤트: 사용자가 중요한 업적을 달성합니다. 전환 가치: 8 7.다운로드한 콘텐츠: 이벤트: 사용자가 앱 내에서 추가 콘텐츠를 다운로드합니다. 전환 가치: 12 8.앱 등록: 이벤트: 사용자가 등록 절차를 완료했습니다. 전환 가치: 7 9.높은 점수 달성: 이벤트 : 사용자가 게임에서 높은 점수를 달성합니다. 전환 가치: 25 10. 본 동영상 광고: 이벤트: 사용자가 보상형 동영상 광고를 시청합니다. 전환 가치: 30

[SKAdNetwork 흐름] 앱 서버 or 앱 → 에어브릿지 ↔ 광고 네트워크(구글 애드몹, 페이스북 광고) ex)

  • 앱 설치 될 때, 앱에서 에어브릿지로 설치이벤트를 쏨.
  • 앱 설치 될 때, 앱 서버에서 광고네트워크로 설치 이벤트를 쏨.

iii)포스트백은 미리 정의된 이벤트가 발생할 때 발생하는 서버 간 통신의 한 형태입니다. 광고 및 속성의 맥락에서 포스트백은 특정 이벤트나 전환에 대해 서버(예: 광고 네트워크 서버 또는 앱 개발자 서버)에 알리기 위해 종종 사용됩니다.

SKAdNetwork 시나리오에서 앱 서버는 앱이 설치될 때 포스트백을 광고 네트워크로 보내는 역할을 담당하며 전환 가치 관리에도 관여할 수 있습니다.

IDFA을 사용하기 위해 설정해야할 것

1. ATT 노출

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

  1. Info.plist의 NSUserTrackingUsageDescription 권한 문구 설정(Privacy – Tracking Usage Description)
  2. 권한 노출이 필요한 곳에서 requestTrackingAuthorization(completionHandler:) 호출
  3. 권한 허용/미허용에 따른 분기처리
// 앱 추적 권한 요청
// 1초 대기를 하지 않으면 개인적으로 ATT를 설정하지 않았다는 reject 이슈가 있었어서
// 1초대기를 추가함.
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
    if #available(iOS 14, *) {
        ATTrackingManager.requestTrackingAuthorization { status in
            switch status {
            case .authorized:           // 허용됨
                print("Authorized")
                print("IDFA = \\(ASIdentifierManager.shared().advertisingIdentifier)")
            case .denied:               // 거부됨
                print("Denied")
            case .notDetermined:        // 결정되지 않음
                print("Not Determined")
            case .restricted:           // 제한됨
                print("Restricted")
            @unknown default:           // 알려지지 않음
                print("Unknow")
            }
        }
    }
}

2. IDFA Appstore 정보입력

  1. AppStore > 앱이 수집하는 개인정보 > 데이터 유형 편집
  2. 데이터 수집 > 식별자 > 기기ID 체크
  3. 식별자 > 기기ID 설정 ( 기기ID 체크를 해야 노출됨)
apple 앱이 수집하는 개인정보.png
apple 앱이 수집하는 개인정보.png
데이터수집.png
기기식별자.png