반응형
IDFA란 무엇인가?
각 iOS 기기에서 타겟 광고를 게재하거나 앱 속성을 추척하기 위한 고유한 ID 값입니다.
iOS6부터 소개되어 iOS13까지 아래처럼 쉽게 사용할 수 있었습니다.
import AdSupport
var idfa: UUID {
return AsIdentifierManager.shared().advertisingIdentifier
}
iOS14
iOS14를 대상으로 하는 앱들은 IDFA 접근을 위해서 AppTrackingTransparency, AdSupport 2개의 프레임워크 사용이 필요합니다.
AppTrackingTranparency 통해 개발자가 IDFA를 ASIdentifierManager에서 직접 조회하는 대신에 사용자에게 IDFA 읽기 권한을 요청할 수 있습니다.
※ 권한 요청은 앱 설치 당 오직 1회 요청만 가능
Info.plist 업데이트
사용자에게 알리기 위한 메시지를 추가 작업이 필요합니다.
어떤 사유로 앱이 사용자 또는 디바이스 추적을 위한 데이터를 사용하기 위해서 권한이 필요한지에 대한 설명입니다.
해당 메시지는 앱속의 Info.plist에 추가 해야합니다.
//Privacy - Tracking Usage Description
<key>NSUserTrackingUsageDescription</key>
<string>앱이 타겟광고게재 추적 목적으로 IDFA에 접근하려고 합니다.</string>
Info.plist에 메시지를 추가 했으면 계정에 권한 요청을 위해서 로컬 코드를 업데이트 해야합니다.
권한 요청
- Status: Authorized
- IDFA를 ASIdentifierManager에서 조회
- Status: Denied
- 사용자 설정 페이지로 이동
- Status: Not Determined
- 사용자에게 권한을 요청하고 다이얼로그를 표시
import AdSupport
import AppTrackingTransparency
func requestPermission() {
ATTrackingManager.requestTrackingAuthorization { status in
switch status {
case .authorized:
// Tracking authorization dialog was shown
// and we are authorized
print("Authorized")
// Now that we are authorized we can get the IDFA
print(ASIdentifierManager.shared().advertisingIdentifier)
case .denied:
// Tracking authorization dialog was
// shown and permission is denied
print("Denied")
case .notDetermined:
// Tracking authorization dialog has not been shown
print("Not Determined")
case .restricted:
print("Restricted")
@unknown default:
print("Unknown")
}
}
}
- 어떻게 권한 요청을 하는지 애플 다이얼로그 예제입니다.
- 만약 사용자가 권한을 허용하지 않는다면 UUID값은 모두 0으로 표기되어 반환됩니다.
- 파란색 박스가 개발자가 앱속 Info.plist에 추가 작업한 메시지가 표시되는 영역입니다.
Origin Link : https://medium.com/@nish.bhasin/how-to-get-idfa-in-ios14-54f7ea02aa42
반응형