Singular SDK를 통한 동의 관리: 의사결정 프레임워크
이 문서는 Singular가 제공하는 개인정보 보호 제어 기능과 여러 고객사에서 관찰되는 구현 패턴을 설명하고, 이를 하나의 동의 아키텍처로 구성하는 프레임워크를 제시합니다. 각 개별 제어 기능은 자체 문서에 설명되어 있으며, 이 페이지에서는 이들이 어떻게 함께 작동하는지 설명합니다.
시작하기 전에: 동의 플로우는 귀사의 법무 및 개인정보 보호팀이 통제하며, 각 관할권에서 앱에 어떤 태도를 적용할지 결정할 책임이 있습니다. 이 문서는 제품 동작만을 설명하며 법률 자문이 아닙니다.
모든 동의 플로우가 귀결되는 두 가지 결정
Singular의 개인정보 보호 제어는 두 가지 독립적인 결정을 중심으로 구성됩니다. 이 둘을 분리해 두면 하나의 동의 프롬프트로 규정을 준수하는 구현이 가능합니다.
결정 1: 추적. Singular가 이 사용자를 인식하는가? 이는 SDK를 초기화할지 여부와 시점에 따라 제어됩니다. 초기화는 첫 세션을 전송하고, 설치 레코드를 생성하며, 어트리뷰션 처리를 트리거합니다. SDK가 전혀 초기화되지 않으면 Singular는 해당 기기에 대해 아무것도 수신하지 않습니다. 이는 사용 가능한 가장 엄격한 제어입니다.
결정 2: 공유. Singular가 사용자를 인식하는 경우, 해당 데이터를 광고 파트너와 공유해도 되는가? 이는 Limit Data Sharing (LDS) 플래그로 제어됩니다. LDS를 사용하면 퍼스트파티 분석(세션, 리텐션, 이벤트, 리포팅)은 유지하면서 포스트백으로 파트너에게 전달되는 내용을 제한할 수 있습니다. 의미와 파트너 동작은 Limit Data Sharing FAQ를 참조하세요.
동의 프레임워크가 측정 동의와 광고 또는 리타겟팅 동의를 구분하는 경우(EEA에서 일반적) 매핑은 직접적입니다. 측정 동의는 초기화를 게이트하고, 광고 동의는 LDS를 설정합니다. 한 번 해결된 하나의 프롬프트가 두 레버를 모두 구동합니다.
가장 낮은 제한에서 가장 높은 제한 순의 제어 목록
| 제어 | 수행하는 작업 | 수행하지 않는 작업 |
|---|---|---|
limitDataSharing (config 또는 런타임) |
사용자의 공유 기본 설정을 표시합니다. 파트너 포스트백 동작은 파트너별 구성을 따릅니다. | Singular의 추적을 중단하지 않습니다. 파트너 수준 제한이 구성되어 있지 않으면 포스트백을 변경하지 않습니다. |
| 제한된 식별자 모드 | SDK가 IDFA 또는 GAID를 수집하지 않고 대신 IDFV 또는 ASID를 사용합니다. | 비광고 식별자의 추적이나 공유를 중단하지 않습니다. |
stopAllTracking() |
즉시 그리고 지속적으로 모든 전송을 중단하며, resumeAllTracking()가 호출될 때까지 유지됩니다. |
이미 전송된 설치 및 이벤트를 취소하지 않습니다. 초기화가 이미 어트리뷰션을 트리거했습니다. |
| 초기화하지 않음 | Singular가 해당 기기에 대해 아무것도 수신하거나 처리하지 않습니다. | 이러한 사용자에게는 디퍼드 딥링크와 어트리뷰션을 사용할 수 없습니다. |
trackingOptIn() |
레거시: 동의 알림 이벤트만 기록합니다. | 추적이나 데이터 처리에 기능적 효과가 없습니다. 이를 기반으로 동의 로직을 구축하지 마세요. |
세 가지 동의 플로우 모델
-
옵트아웃 기본값(먼저 초기화): SDK가 앱 실행 시 초기화되고, 온보딩 중에 동의가 제시되며, 거부 시
stopAllTracking()을 트리거하거나 LDS를 true로 설정합니다. 완전한 어트리뷰션 정확도와 신속한 SAN 포스트백을 제공합니다. 사용자가 응답하기 전에 설치 시점이 캡처되므로, 이 모델은 명시적 선택 이전의 수집을 허용하는 법적 태도가 필요합니다. 미국 대상 사용자에게 일반적입니다. - 옵트인 기본값(먼저 동의): 사용자가 명시적으로 동의할 때까지 SDK가 초기화되지 않습니다. 동의하지 않은 사용자에 대해서는 아무것도 전송되지 않습니다. GDPR 대상 사용자에게 표준입니다. 결정을 저장하고 이후 실행 시 모든 앱 진입점에서 즉시 초기화하세요.
-
하이브리드(즉시 초기화하고 초기화 시 LDS 확정): 앱 실행 시 동의 화면을 해결한 다음, config 객체에
limitDataSharing가 이미 설정된 상태로 초기화합니다. 설치 시점부터 모든 레코드가 사용자가 선언한 상태를 담게 되며, 의도는 있으나 아직 적용되지 않은 구간이 없습니다. 실행 시점에 동의를 표시할 수 있는 개인정보 민감 고객에게 권장하는 패턴입니다.
대부분의 다지역 앱은 관할권 또는 CMP에 따라 런타임에 선택되는 둘 이상의 모델을 실행합니다.
계획해야 할 타이밍 관련 결과
- 초기화가 동일한 앱 세션 내에서 이루어지면 지연 초기화가 설치를 잃게 하지 않습니다. Android install referrer가 기기에 유지되어 어트리뷰션 요청이 정상적으로 완료됩니다.
- 초기화가 오랫동안 지연되면(다단계 동의 플로우, 여러 날에 걸친 간격) SAN 매칭률이 저하됩니다. 첫 실행 게이트는 빠른 단일 화면으로 유지하세요.
- SKAdNetwork 포스트백은 설치 시점에 OS가 생성하며 SDK 초기화 타이밍의 영향을 받지 않습니다.
- 디퍼드 딥링크는 초기화와 어트리뷰션이 완료되어야 합니다. 엄격한 옵트인 모델에서는 동의한 사용자에게만 디퍼드 딥링크를 사용할 수 있습니다.
- 초기화 완료 콜백은 없습니다. 사용자 지정 이벤트 시퀀싱을 구축하는 경우 초기화 시점의 동의 상태를 스냅샷으로 저장하세요.
- 설치 레코드는 초기화 시점에 적용된 LDS 값을 고정합니다. 이후 업데이트는 후속 이벤트에만 적용되며, 이미 전송된 포스트백은 회수되지 않습니다. 법적 태도가 요구하지 않는 한 결정하지 않은 사용자를 LDS true로 기본 설정하지 마세요. 동의를 먼저 확정하거나 사용자가 응답할 때까지 LDS를 unset으로 두세요.
일반적인 함정
- 설정되지 않은 LDS는 제한되지 않음으로 처리됩니다. 사용자를 제한하려 하지만 아직 플래그를 설정하지 않은 연동은 Singular 관점에서 제한되지 않은 사용자입니다.
- LDS true 자체로는 아무것도 바꾸지 않습니다. LDS 사용자의 포스트백 동작은 파트너별, 앱별로 파트너 구성에서 정의됩니다(전송 안 함 / PII 없이 전송 / 평소대로 전송). 플래그를 설정하고 적용을 구성하세요.
- ATT는 동의 프레임워크가 아닙니다. ATT는 IDFA 공개만 관장합니다. ATT 거부가 LDS true도 의미해야 하는지는 귀사 개인정보 보호팀의 정책 결정입니다.
-
GDPR 삭제는 옵트아웃이 아닙니다. OpenDSR API는 수집된 데이터를 삭제하지만 SDK가 향후 이벤트를 전송하는 것을 중단시키지는 않습니다. 같은 사용자 플로우에서 삭제와
stopAllTracking()을 함께 처리하세요.
관련 문서
- SDK 옵트인 및 옵트아웃 사례 (구현 코드)
- Limit Data Sharing FAQ (의미 및 파트너)
- GDPR API 참조 (데이터 주체 권리)
- Kids Apps SDKs FAQ (아동용 앱)