Skip to main content
에어브릿지 이벤트 구성에 필요한 데이터를 iOS에서 수집합니다.

데이터 패칭하기

아래 내용을 참고해 주세요.

Airbridge Device ID

Airbridge의 기기 식별자 입니다. (예시: 82A16EC9-A273-48B6-9BB2-017EAB641109)

iOS SDK

iOS SDK (Deprecated)

Airbridge Generated UUID

Airbridge에서 기기별로 인스톨시에 부여하는 랜덤한 UUID 입니다. (예시: 82A16EC9-A273-48B6-9BB2-017EAB641109)

iOS SDK

iOS SDK (Deprecated)

ATT (App Tracking Transparency)

iOS 14.5 이상에서 다른 회사의 앱과 웹사이트에 걸쳐 사용자의 활동을 추적하거나 IDFA에 접근하려면 ATT(App Tracking Transparency)를 통해 동의를 받아야 합니다. 사용자는 시스템 프롬프트에서 앱의 추적 허용 여부를 선택할 수 있습니다. Airbridge iOS SDK를 통해 ATT 동의를 요청하고 현재 동의 상태를 조회할 수 있습니다. ATT 요청은 앱에서 명시적으로 호출해야 합니다.

사용하기 전에

  • Airbridge SDK를 초기화하고 호출해 주세요.
  • 이 API는 일반 iOS SDK에서 제공합니다. Restricted SDK에서는 제공하지 않습니다.
  • 앱의 Info.plist에 NSUserTrackingUsageDescription을 추가해 주세요. 이 값은 사용자가 ATT 프롬프트에서 확인하는 추적 목적 설명입니다. 아래 예시의 문구를 앱의 실제 데이터 사용 목적에 맞게 변경해 주세요.

ATT 동의 요청하기

requestTrackingAuthorization을 호출하면 SDK가 Apple ATT API에 동의 요청을 전달합니다. SDK는 앱이 활성화될 때까지 요청을 대기시키지 않으므로 앱이 활성 상태일 때 호출해 주세요. 앱 시작 시 요청하려면 SDK 초기화 이후의 applicationDidBecomeActive 또는 sceneDidBecomeActive 등 앱이 활성화된 시점에서 호출할 수 있습니다. 반환값과 완료 콜백은 아래와 같이 구분해 확인해 주세요.
  • 반환값이 true이면 SDK가 요청을 처리하기 위해 접수한 상태입니다. 프롬프트 표시 여부와 사용자의 동의 여부는 이 값으로 판단할 수 없습니다.
  • SDK가 초기화되지 않았거나 비활성화된 상태이면 false를 반환하며 완료 콜백을 호출하지 않습니다.
  • 완료 콜백은 메인 큐에서 호출되며, AirbridgeTrackingAuthorization으로 ATT 상태를 전달합니다.

ATT 동의 상태 조회하기

trackingAuthorizationStatus()는 현재 ATT 상태를 동기적으로 반환합니다. 상태 조회만으로 ATT 프롬프트를 표시하거나 동의를 요청하지 않습니다. SDK가 초기화되지 않았거나 비활성화된 상태이면 notDetermined를 반환합니다. 이 경우에는 SDK 초기화 및 활성화 상태를 먼저 확인해 주세요.

ATT 상태 이해하기

요청 결과와 상태 조회에는 동일한 AirbridgeTrackingAuthorization을 사용합니다. iOS 14 미만 등 ATT를 지원하지 않는 환경에서는, 초기화되고 활성화된 일반 SDK의 요청 결과와 상태 조회가 authorized를 반환합니다. 이 값은 미지원 환경에 대한 SDK의 반환값이며 ATT 프롬프트에서 사용자가 동의했다는 뜻으로 해석하지 않아야 합니다. API를 호출하기 위해 앱 코드에서 iOS 버전 분기를 추가할 필요는 없습니다.

프롬프트가 표시되지 않는 경우

ATT 프롬프트의 표시 여부는 Apple의 동작과 사용자의 설정에 따라 결정됩니다. 요청 반환값이 true여도 프롬프트가 표시되지 않을 수 있습니다. 아래 내용을 확인해 주세요.
  • 앱이 활성 상태인지 확인해 주세요. 앱이 활성화되기 전이나 백그라운드에서 요청하면 프롬프트가 표시되지 않을 수 있습니다.
  • 알림 등 다른 권한 요청이 사용자의 응답을 기다리는 중인지 확인해 주세요. 권한 요청을 동시에 호출하지 않고 앞선 요청이 완료된 후 ATT를 요청해 주세요. iOS는 동시에 발생한 권한 요청을 나중에 표시하도록 보관하지 않습니다.
  • 완료 콜백 또는 상태 조회 결과를 확인해 주세요. notDetermined이면 표시 조건을 확인한 뒤 앱에서 다시 요청할 수 있습니다. SDK는 자동 재요청이나 중복 요청 병합을 수행하지 않습니다.
  • 사용자가 설정에서 앱의 추적을 거부했거나 시스템에서 추적 요청을 제한했는지 확인해 주세요. 이미 결정된 상태에서 다시 호출하는 것만으로 프롬프트가 다시 표시되거나 권한이 변경되는 것은 보장되지 않습니다.
  • Info.plist의 NSUserTrackingUsageDescription 설정을 확인해 주세요.
사용자는 설정에서 추적 허용 여부를 변경할 수 있습니다. 앱이 다시 활성화되는 등 필요한 시점에 현재 상태를 조회해 주세요. SDK의 상태 조회는 설정 변경을 실시간으로 구독하는 기능을 제공하지 않습니다. 프롬프트와 권한 요청 조건은 Apple ATT 요청 문서를 참고해 주세요.

기존 ATT 대기 설정과 함께 사용하기

ATT 동의를 요청하는 API와 SDK의 ATT 결정 대기 설정을 함께 확인해 주세요. 기존 SDK의 ATT 상태 확인 및 처리 대기 동작은 유지됩니다. 기본 설정에서는 ATT 상태가 결정될 때까지 install 이벤트와 디퍼드 딥링크, 어트리뷰션 관련 처리가 최대 30초 대기합니다. 대기 시간을 설정한 경우 해당 설정값을 따릅니다. requestTrackingAuthorization은 ATT 동의 요청을 전달하며, 기존 대기 시간을 다시 시작하거나 늘리지 않습니다. trackingAuthorizationStatus()도 ATT 결정 처리나 저장된 처리 상태를 변경하지 않습니다. ATT 동의가 아직 결정되지 않은 상태에서 대기 시간이 끝나면 SDK의 대기 중인 처리가 진행될 수 있습니다. 앱의 요청 시점과 사용자의 응답에 필요한 시간을 고려해 기존 autoDetermineTrackingAuthorizationTimeout 설정을 확인해 주세요. 이 설정은 SDK의 처리 대기 시간에 적용되며, ATT 프롬프트의 표시 여부나 사용자의 동의 상태를 변경하지 않습니다.

IDFA

애플에서 발급하는 Advertising ID 입니다. (예시: 82A16EC9-A273-48B6-9BB2-017EAB641109)

IDFV

퍼블리셔가 특정 사용자가 어떤 앱을 설치했는지 파악하는 데 사용할 수 있는 고유 ID 입니다. (예시: 82A16EC9-A273-48B6-9BB2-017EAB641109)

Limit AD Tracking

기기의 Limit AD Tracking 정보 입니다. (예시: true)

Device Model

기기의 모델 이름 입니다. (예시: iPhone)

Device Identifier

기기의 모델 식별자 입니다. (예시: iPhone9,3)

Device Manufacturer

기기의 제조사 정보 입니다. (예시: Apple)

OS Name

기기의 OS 이름입니다. (예시: iOS)

OS Version

기기의 OS 버전입니다. (예시: 13.3)

Locale

기기의 Locale 설정 값 입니다. (예시: en-US)

Timezone

기기의 Timezone 설정 값 입니다. (예시: US/Pacific)

Orientation

기기의 화면 방향 값 입니다. “portrait” 혹은 “landscape” 둘 중 하나의 값 입니다. (예시: portrait)

Screen Density

기기의 실제 화면 Density 값 입니다. (예시: 3.000)

Screen Width

기기의 실제 화면 너비 값 입니다. (예시: 375.0)

Screen Height

기기의 실제 화면 높이 값 입니다. (예시: 667.0)

Network Carrier

해당 기기의 네트워크 사업자 정보 입니다.

Cellular Status

해당 기기의 모바일 데이터 사용 여부 입니다. (예시: true)

WiFi Status

해당 기기의 Wifi 데이 사용 여부 입니다. (예시: true)

Package Name

해당 어플리케이션의 패키지 명 입니다. (예시: co.ab180.ablog)

Version

해당 어플리케이션의 버전 이름 입니다. (예시: 1.0.0)

Event Timestamp

해당 이벤트의 발송 시간(Milliseconds) 입니다. (예시: 1581043739682)