기기의 IDFA(광고주용 ID)를 기록하려면 사용자의 허가를 받기 위한 메시지를 표시해야 합니다. 이렇게 하려면 앱에 Apple의 ATT(App Tracking Transparency) 프레임워크를 포함해야 합니다. Adjust SDK는 사용자의 허가 여부를 저장하고 각 요청과 함께 Adjust 서버로 전송합니다.
승인 상태
상태 | 코드 | 설명 |
---|---|---|
ATTrackingManagerAuthorizationStatusNotDetermined | 0 | 사용자가 아직 액세스 프롬프트에 응답하지 않음 |
ATTrackingManagerAuthorizationStatusRestricted | 1 | 앱 관련 데이터에 대한 액세스가 디바이스 수준에서 차단됨. |
ATTrackingManagerAuthorizationStatusDenied | 2 | 사용자가 앱 관련 데이터에 대한 디바이스 측정 액세스를 거부함 |
ATTrackingManagerAuthorizationStatusAuthorized | 3 | 사용자가 앱 관련 데이터에 대한 디바이스 측정 액세스를 승인함 |
ATT 승인 래퍼
+ (void)requestTrackingAuthorizationWithCompletionHandler:(void (^_Nullable)(NSUInteger status))completion;
Adjust SDK에는 Apple requestTrackingAuthorizationWithCompletionHandler
메서드의 래퍼가 포함되어 있습니다. ATT 프롬프트를 커스텀하지 않으려면 이 래퍼를 사용할 수 있습니다.
콜백 메서드는 사용자가 동의 팝업창에 응답할 때 트리거되고 사용자의 동의 상태 코드를 Adjust 서버로 전송합니다. 콜백 함수 내에서 각 상태 코드에 대한 응답을 정의할 수 있습니다.
ATT에 대한 텍스트 콘텐츠를 지정해야 합니다. 이를 위해 텍스트를 Info.plist
파일의 NSUserTrackingUsageDescription
키에 추가합니다.
Adjust.requestTrackingAuthorization() { status in switch status { case 0: // ATTrackingManagerAuthorizationStatusNotDetermined case break case 1: // ATTrackingManagerAuthorizationStatusRestricted case break case 2: // ATTrackingManagerAuthorizationStatusDenied case break case 3: // ATTrackingManagerAuthorizationStatusAuthorized case break default: break }}
[Adjust requestTrackingAuthorizationWithCompletionHandler:^(NSUInteger status) { switch (status) { case 0: // ATTrackingManagerAuthorizationStatusNotDetermined case break; case 1: // ATTrackingManagerAuthorizationStatusRestricted case break; case 2: // ATTrackingManagerAuthorizationStatusDenied case break; case 3: // ATTrackingManagerAuthorizationStatusAuthorized case break; }}];
현재 승인 상태 확인
+ (int)appTrackingAuthorizationStatus;
사용자의 현재 인증 상태는 언제든지 조회가 가능합니다. getAppTrackingAuthorizationStatus
메서드를 호출하여 정수 로 인증 상태 코드를 반환합니다.
let authorizationStatus = Adjust.appTrackingAuthorizationStatus();
int authorizationStatus = [Adjust appTrackingAuthorizationStatus];
var authorizationStatus = Adjust.appTrackingAuthorizationStatus();
커스텀 프롬프트 타이밍
@property (nonatomic, assign) NSUInteger attConsentWaitingInterval;
앱이 온보딩 과정이나 튜토리얼을 포함하는 경우, 사용자가 온보딩 과정이나 튜토리얼을 완료할 때까지 사용자의 ATT 동의 상태 전송을 지연시킬 수 있습니다. 이를 위해 attConsentWaitingInterval
속성을 설정하여 최대 120초 동안 데이터 전송을 지연하여 사용자가 초기 온보딩을 완료할 수 있는 시간을 제공할 수 있습니다. 타임아웃이 끝나거나 사용자가 동의 상태를 설정한 경우, SDK는 지연 기간 동안 기록된 모든 정보를 사용자의 동의 상태와 함께 Adjust 서버로 전송합니다.
let yourAppToken = "{YourAppToken}"let environment = ADJEnvironmentSandbox as? Stringlet adjustConfig = ADJConfig( appToken: yourAppToken, environment: environment)//...adjustConfig?.attConsentWaitingInterval = 30//...Adjust.appDidLaunch(adjustConfig)
*adjustConfig = [ADJConfig configWithAppToken:@"{YourAppToken}" environment:ADJEnvironmentSandbox];//...[adjustConfig setAttConsentWaitingInterval:30];//...[Adjust appDidLaunch:adjustConfig];
승인 상태 변경 확인
+ (void)checkForNewAttStatus;
커스텀 ATT 프롬프트를 사용하는 경우, 사용자 인증 상태 변경에 대해 Adjust SDK에 알려야 합니다. checkForNewAttStatus
메서드를 호출하여 인증 상태를 Adjust 서버로 전송합니다.
Adjust.checkForNewAttStatus();
[Adjust checkForNewAttStatus];
iOS 17 동의 처리
iOS 17 출시와 함께 Apple은 개발자가 서드파티에 보낼 수 있는 데이터에 관한 새로운 규정을 도입했습니다. 개발자가 Apple의 개인정보 보호정책 준수를 입증할 수 있도록 Adjust SDK는 동의 사용자와 비동의 사용자에 대해 두 엔드포인트를 별도로 사용합니다.
기본 설정에 따라 Adjust SDK는 analytics.adjust.com
엔드포인트를 사용한 확률론적 모델링 을 위해 제한된 데이터 세트를 Adjust 서버로 전송합니다. 이 엔드포인트는 다음의 정보를 수신 하지 않습니다 .
idfa
: The device ID For Advertisers (IDFA).started_at
: The device startup time.
사용자가 ATT에 동의한 경우에만 Adjust SDK는 결정론적 어트리뷰션 을 위해 IDFA와 started_at 속성 모두에 대한 액세스를 획득하고, 전체 페이로드를 consent.adjust.com
로 전송합니다.
두 엔드포인트는 모든 URL 전략 에 사용할 수 있습니다.
URL 전략 | 비동의 엔드포인트 | 동의 엔드포인트 |
---|---|---|
ADJDataResidencyEU | analytics.eu.adjust.com | consent.eu.adjust.com |
ADJDataResidencyTR | analytics.tr.adjust.com | consent.tr.adjust.com |
ADJDataResidencyUS | analytics.us.adjust.com | consent.us.adjust.com |
ADJUrlStrategyChina | analytics.adjust.world | consent.adjust.world |
ADJUrlStrategyCn | analytics.adjust.cn | consent.adjust.cn |
ADJUrlStrategyIndia | analytics.adjust.net.in | consent.adjust.net.in |