Google Play의 Data safety 양식과 Apple의 App Privacy 세부 정보 작성 방법
각 설문이 묻는 것, SDK가 답을 어떻게 바꾸는지, 사람들이 자주 틀리는 세 가지 질문, 그리고 필요한 답을 각 벤더가 어디에 공개하는지 설명합니다.
빌드에 포함된 모든 SDK를 나열하고, 각 벤더의 자체 공개 페이지나 개인정보 매니페스트를 열고, 계정처럼 직접 수집하는 데이터를 추가하십시오. 그런 다음 그 하나의 목록으로 두 설문에 답하십시오. Play는 무엇이 수집되고 공유되는지, 그리고 그 이유를 묻습니다. Apple도 같은 것을 묻고, 여기에 더해 각 유형이 사용자에게 연결되는지와 추적에 사용되는지를 묻습니다.
대신 몇 분 만에 끝내세요
AppFoyer는 이 가이드가 다루는 페이지, 즉 개인정보처리방침, 이용약관, 지원, 계정 삭제 페이지와 app-ads.txt를 전용 하위 도메인에서 호스팅합니다. 직접 도메인이나 서버를 둘 필요가 없습니다. 앱 하나는 무료이며, 스토어가 요구하는 것은 무엇도 유료로 막아 두지 않습니다.
2026년 9월 25일 확인. 스토어 정책은 바뀌며, 예고 없이 바뀌기도 합니다. 아래의 모든 내용은 공식 문서로 연결되며, 권위를 갖는 것은 이 페이지가 아니라 그 문서입니다. 둘이 다르면 스토어가 맞습니다. 이 가이드는 영어 원문을 번역한 것이며, 스토어 문서의 인용문은 영어 원문 그대로 두었습니다.
SDK를 포함해 앱이 기기 밖으로 보내는 것의 목록을 하나 만들고, 그 목록으로 두 설문에 답하십시오. Google Play의 Data safety 양식과 Apple의 App Privacy 세부 정보는 같은 사실을 다른 말로 묻습니다. 답이 서로 다른 두 기억에서 나오면 결국 어긋나게 됩니다.
Google Play의 모든 앱은 아무것도 수집하지 않는 앱을 포함해 Data safety 양식을 작성해야 합니다. 내부 테스트 트랙에만 게시된 앱만 면제됩니다 (Google Play의 Data safety 도움말). Apple은 App Store의 모든 앱에 App Privacy 세부 정보를 요구합니다 (Apple의 App Privacy 세부 정보).
양식의 위치
- Google Play: Play Console → 앱 → App content → Data safety.
- App Store: App Store Connect → 앱 → App Privacy.
1단계: 목록 만들기
- 모든 서드파티 SDK. 의존성 파일을 읽으십시오.
build.gradle/libs.versions.toml,Podfile/Package.swift,pubspec.yaml,package.json. 두 스토어 모두 SDK가 수집하는 것을 개발자가 수집하는 것으로 간주합니다. Apple은 직접 작성하지 않은 코드를 포함해 앱의 모든 코드에 대한 책임을 개발자에게 묻습니다. - 각 SDK가 전송하는 것. 벤더 자체의 페이지를 사용하십시오. RevenueCat, Unity Ads, OneSignal 등
일부 벤더는 Play의 용어 그대로 답을 공개합니다. Google은 AdMob과 각 Firebase 제품에 대한 표를
공개합니다. iOS에서는 대부분의 최신 SDK가 개인정보 매니페스트(
PrivacyInfo.xcprivacy)를 함께 제공합니다. Xcode에서 Organizer를 열고 아카이브를 오른쪽 클릭한 뒤 Generate Privacy Report를 선택하면 빌드에 포함된 모든 매니페스트를 한 페이지에서 볼 수 있습니다 (Apple의 개인정보 매니페스트 문서). - 직접 수집하는 데이터. 계정(이메일, 사용자 ID), 백엔드에 저장하는 모든 것, 직접 작성한 코드가 읽는 위치 정보, 서버가 보관하는 구매 기록입니다.
아무것도 공개하지 않는 벤더도 있습니다. AppLovin은 어느 스토어용으로도 데이터 유형 목록이 없으며, 여러 분석 SDK는 Play 대응표가 없습니다. 이런 경우 SDK가 무엇을 전송하는지에 대한 SDK 자체 문서를 읽고, 빠진 부분을 기록해 두십시오. 추측하지 마십시오.
2단계: Google Play의 질문
각 데이터 유형에 대해 Play는 다음을 묻습니다.
- 수집, 공유, 또는 둘 다? “수집”은 기기 밖으로 전송하는 것을 뜻합니다. “공유”는 제3자에게 전송하는 것을 뜻합니다. 개발자를 대신해 데이터를 처리하는 서비스 제공업체는 공유로 보지 않으며, 완전히 익명화된 데이터도 마찬가지입니다. 그래서 Firebase Analytics는 보통 “수집, 공유 안 함”이고 광고 SDK는 보통 “수집 및 공유”입니다.
- 일시적으로 처리되나요? 데이터가 그 요청 하나를 처리할 만큼만 메모리에 유지되는 경우에만 해당합니다. 예를 들어 날씨를 가져오기 위해 보내고 저장하지 않는 위치 정보가 그렇습니다.
- 필수 또는 선택? 선택은 사용자가 수집 여부를 고를 수 있다는 뜻입니다.
- 이유는? Play의 목적은 App functionality, Analytics, Developer communications, Advertising or marketing, Fraud prevention, security, and compliance, Personalization, Account management입니다. 수집과 공유는 각각 따로 목적을 지정합니다.
그다음 보안 질문이 두 개 있습니다. 모든 사용자 데이터가 전송 중에 암호화되나요? 이것은 개발자만
확인할 수 있습니다. 평범한 http:// 엔드포인트가 하나라도 있으면 답은 No입니다. 사용자가 삭제를
요청할 수 있나요? 삭제를 요청할 방법을 제공하거나, 90일 이내에 데이터를 자동으로 삭제한다면 Yes로
답할 수 있습니다.
앱에서 사용자가 계정을 만들 수 있다면, 같은 양식의 Data deletion 질문은 사용자가 계정 삭제를 요청할 수 있는 웹 링크도 요구합니다 (Google Play의 계정 삭제 요구사항). 계정 삭제 URL 가이드를 참고하십시오.
Google Play 자체 결제 시트에 입력된 결제 정보는 앱이 그 정보에 접근하지 않는 한 신고할 필요가 없습니다. 앱이나 SDK가 받는 구매 기록은 여전히 신고해야 합니다.
3단계: Apple의 질문
각 데이터 유형에 대해 Apple은 목적과 함께 예/아니요 질문 두 개를 묻습니다.
- 사용자에게 연결되나요? 데이터는 수집되기 전에 비식별화되지 않는 한 연결된 것으로 간주됩니다. 계정, 사용자 ID, 기기 ID 중 하나만 있어도 연결됩니다.
- 추적에 사용되나요? 추적이란 사용자나 기기에 대한 앱의 데이터를 타깃 광고나 광고 측정을 위해 다른 회사의 데이터와 결합하거나, 데이터 브로커와 공유하는 것을 뜻합니다. 그 기능을 전혀 사용하지 않더라도 SDK가 이를 할 수 있습니다. 무엇이든 추적에 사용된다면, 앱은 먼저 App Tracking Transparency를 통해 허락을 구해야 합니다 (Apple의 사용자 개인정보 및 데이터 사용).
Apple의 목적은 Third-Party Advertising, Developer’s Advertising or Marketing, Analytics, Product Personalization, App Functionality, Other Purposes입니다.
Apple은 네 가지 조건을 모두 충족할 때에만 데이터 유형을 제외하도록 허용합니다. 추적이나 광고에 사용되지 않아야 합니다. 앱의 주요 기능과 무관하게, 드물게, 사용자의 선택에 따라서만 수집되어야 합니다. 그리고 사용자가 매번 이를 인지한 상태에서 제공해야 합니다. 대부분의 SDK 데이터는 첫 번째 조건부터 충족하지 못합니다.
사람들이 자주 틀리는 세 가지 답
- “우리는 아무것도 수집하지 않습니다.” 직접 작성한 코드가 아무것도 보내지 않더라도, 크래시 리포터와 분석 도구는 기기 식별자와 진단 정보를 보냅니다.
- 광고 SDK에 대해 “공유 안 함”. 광고 네트워크는 자체 광고 목적을 위해 식별자와 상호작용 데이터를 받습니다. 그것은 공유입니다.
- 개인정보처리방침과 일치하지 않는 양식. 스토어는 두 문서를 함께 읽으므로, 불일치만으로도 충분히 문제가 됩니다. 두 문서를 같은 목록으로 작성하십시오. 두 문서가 서로 다를 때를 참고하십시오.
최신 상태 유지하기
답은 SDK 목록이 최신인 만큼만 최신입니다. SDK를 추가하면 같은 변경에서 두 양식과 개인정보처리방침을 함께 업데이트하십시오. 벤더도 새 SDK 버전과 함께 공개 내용을 수정합니다.
AI 어시스턴트에게 SDK 찾기 맡기기
시간이 걸리는 부분은 1단계이며, 앱 저장소에서 연 코딩 에이전트가 대신 할 수 있습니다. Claude Code, Cursor, Codex 같은 것들입니다. 아래 프롬프트는 빌드 파일만 읽고 모든 SDK와 데이터 사실을 그 출처 파일과 함께 나열하도록 요청합니다. 각 SDK가 무엇을 수집하는지는 묻지 않습니다. 벤더의 공개 내용에 대한 모델의 기억은 추측일 뿐이며, 그 부분은 벤더에게서 나와야 합니다.
답은 AppFoyer 대시보드가 읽는 작은 JSON 형식으로 돌아옵니다. AppFoyer 없이도, 2단계에서 보여 주는 목록이 바로 두 양식을 작성할 때 쓸 목록입니다.
You are helping me fill in Google Play's Data safety form and Apple's App Privacy details for my mobile app. AppFoyer turns your answer into draft answers for both forms, using each SDK vendor's own published disclosure. Your job is only to find what is in the build — not to say what any SDK collects.
## About the app
- App name: [app name]
- Platforms: [Android, iOS or both]
## Step 1 — read the build files
Read only the app's build, manifest and store-metadata files — for example `build.gradle(.kts)`, `gradle/libs.versions.toml`, `AndroidManifest.xml`, `Podfile.lock`, `Package.swift`, `Package.resolved`, `Info.plist`, `*.entitlements`, `PrivacyInfo.xcprivacy`, `pubspec.yaml`, `package.json`, `app.json`. Do not open `.env` files, keystores, credentials or any other secrets, and do not change any file. If you cannot read the code, ask me which SDKs the app uses instead.
Find:
1. Every third-party SDK in the build. Match it to one of these ids where it fits:
- `admob` — Google Mobile Ads (AdMob)
- `applovin-max` — AppLovin MAX
- `unity-ads` — Unity Ads
- `firebase-analytics` — Google Analytics for Firebase
- `mixpanel` — Mixpanel
- `amplitude` — Amplitude
- `meta-app-events` — Meta SDK — App Events
- `firebase-crashlytics` — Firebase Crashlytics
- `sentry` — Sentry
- `firebase-auth` — Firebase Authentication
- `google-sign-in` — Google Sign-In
- `meta-login` — Meta SDK — Facebook Login
- `revenuecat` — RevenueCat
- `firebase-messaging` — Firebase Cloud Messaging
- `onesignal` — OneSignal
An SDK that fits none of them goes under `otherSdks` with its package name. Never force a match.
2. Which of these facts are true, from the dependencies, permissions and usage-description keys:
- `account` — users sign in or create accounts
- `analytics` — usage analytics
- `ads` — advertising
- `crash` — crash reporting or diagnostics
- `location` — the app reads the device location
- `purchases` — in-app purchases or subscriptions
If none is true, the facts are `["none"]`.
Keep the file, and the line where you can, for every SDK and every fact. A README sentence is not evidence.
## Step 2 — confirm with me
Show me the list, grouped as SDKs, other SDKs and facts, each with its file. Ask me to confirm or correct it, and to add anything the build files cannot show — for example an SDK loaded at runtime. Wait for my answer.
## Step 3 — reply in AppFoyer's format
Reply with one ```json code block and nothing after it, exactly in this shape:
```json
{
"format": "appfoyer-store-forms/1",
"platform": "android | ios | both",
"sdks": [{ "id": "admob", "file": "app/build.gradle.kts", "line": 42 }],
"otherSdks": [{ "name": "com.example:tracker", "file": "app/build.gradle.kts", "line": 57 }],
"facts": [{ "fact": "ads", "file": "app/src/main/AndroidManifest.xml", "line": 12 }]
}
```
- `id` is one of the ids above, spelled exactly. `fact` is one of the facts above, or `none`.
- `line` is a number, or leave it out when you do not know it.
- Empty lists are `[]`. No comments inside the JSON.
- Do not describe what an SDK collects, and do not add fields.
AppFoyer와 함께
대시보드의 각 앱에는 Store forms 탭이 있습니다. 빌드에 포함된 SDK에 체크하면, 그 SDK와 앱 설정을 바탕으로 Data safety와 App Privacy 답안 초안을 만듭니다. 모든 답에는 출처가 표시됩니다. 벤더 자체의 답, 벤더의 개인정보 매니페스트, 또는 벤더 데이터 목록에 대한 저희의 해석입니다. 이 탭은 개인정보처리방침에 언급되지 않은 SDK를 표시하고, 붙여 넣을 계정 삭제 링크를 제공합니다. Claude Code 플러그인은 빌드 파일에서 SDK 목록을 채웁니다. 다른 어시스턴트를 쓴다면 탭에서 프롬프트를 복사해 실행하고 답을 다시 붙여 넣으십시오. 탭은 무엇이든 저장하기 전에 그 답이 의미하는 답안을 보여 줍니다. 답은 여전히 각 콘솔에 직접 입력하고 그곳에서 확인해야 합니다. 이것은 초안이며 법률 조언이 아닙니다. 이 탭은 모든 요금제에서 무료입니다.