Langsung ke konten
AppFoyer
Mulai

Panduan Formulir toko dan SDK

Cara mengisi formulir Data safety Google Play dan detail App Privacy Apple

Isi setiap kuesioner, bagaimana SDK mengubah jawabannya, tiga pertanyaan yang sering dijawab salah, dan di mana setiap vendor menerbitkan jawaban yang Anda perlukan.

Daftarkan setiap SDK dalam build Anda, buka halaman pengungkapan milik setiap vendor atau privacy manifest-nya, lalu tambahkan pengumpulan data Anda sendiri, seperti akun. Kemudian jawab kedua kuesioner dari satu daftar itu. Play menanyakan apa yang dikumpulkan, dibagikan, dan untuk apa. Apple menanyakan hal yang sama, ditambah apakah setiap jenis data ditautkan ke pengguna dan digunakan untuk pelacakan.

Selesaikan ini dalam beberapa menit saja

AppFoyer meng-hosting halaman yang dibahas panduan ini — kebijakan privasi, ketentuan, dukungan, penghapusan akun, dan app-ads.txt — di subdomainnya sendiri, tanpa domain atau server milik Anda. Satu aplikasi gratis, dan tidak ada yang diwajibkan toko yang pernah berada di balik paywall.

Diperiksa 25 September 2026. Kebijakan toko berubah, terkadang tanpa pemberitahuan. Semua yang ada di bawah menautkan dokumentasi resmi, dan halaman itulah — bukan halaman ini — yang menjadi acuan. Jika keduanya tidak sejalan, toko yang benar. Panduan ini diterjemahkan dari bahasa Inggris; kutipan dari dokumentasi toko dipertahankan dalam bahasa Inggris aslinya.

Buat satu daftar tentang apa yang dikirim aplikasi Anda keluar dari perangkat, termasuk SDK, dan jawab kedua kuesioner dari daftar itu. Formulir Data safety Google Play dan detail App Privacy Apple menanyakan fakta yang sama dengan kata-kata yang berbeda. Jika jawaban Anda berasal dari dua ingatan yang terpisah, keduanya akan menyimpang.

Setiap aplikasi di Google Play harus mengisi formulir Data safety, termasuk aplikasi yang tidak mengumpulkan apa pun. Hanya aplikasi yang aktif di jalur internal testing yang dikecualikan (bantuan Data safety Google Play). Apple meminta detail App Privacy untuk setiap aplikasi di App Store (detail App Privacy Apple).

Letak formulirnya

  • Google Play: Play Console → aplikasi Anda → App content → Data safety.
  • App Store: App Store Connect → aplikasi Anda → App Privacy.

Langkah 1: susun daftarnya

  1. Setiap SDK pihak ketiga. Baca file dependensi Anda: build.gradle / libs.versions.toml, Podfile / Package.swift, pubspec.yaml, package.json. Kedua toko menganggap apa yang dikumpulkan SDK sebagai milik Anda. Apple meminta pertanggungjawaban Anda atas semua kode di aplikasi Anda, termasuk kode yang tidak Anda tulis.
  2. Apa yang dikirim masing-masing. Gunakan halaman milik vendor sendiri. Beberapa vendor menerbitkan jawaban mereka dalam kosakata Play sendiri, termasuk RevenueCat, Unity Ads, dan OneSignal. Google menerbitkan tabel untuk AdMob dan untuk setiap produk Firebase. Di iOS, sebagian besar SDK saat ini menyertakan privacy manifest (PrivacyInfo.xcprivacy). Di Xcode, buka Organizer, klik kanan sebuah arsip, lalu pilih Generate Privacy Report untuk melihat setiap manifest dalam build Anda di satu halaman (dokumentasi privacy manifest Apple).
  3. Pengumpulan data Anda sendiri. Akun (email, user id), apa pun yang disimpan backend Anda, lokasi yang dibaca kode Anda sendiri, catatan pembelian yang disimpan server Anda.

Beberapa vendor tidak menerbitkan apa pun. AppLovin tidak punya daftar jenis data untuk kedua toko, dan beberapa SDK analitik tidak punya pemetaan untuk Play. Untuk SDK seperti itu, baca dokumentasi SDK itu sendiri tentang apa yang dikirimkannya dan catat celahnya. Jangan menebak.

Langkah 2: pertanyaan Google Play

Untuk setiap jenis data, Play bertanya:

  • Dikumpulkan, dibagikan, atau keduanya? “Dikumpulkan” (collected) berarti dikirim keluar dari perangkat. “Dibagikan” (shared) berarti dikirim ke pihak ketiga. Penyedia layanan yang memproses data atas nama Anda tidak dihitung sebagai berbagi, begitu pula data yang sepenuhnya dianonimkan. Inilah sebabnya Firebase Analytics biasanya “dikumpulkan, tidak dibagikan” dan SDK iklan biasanya “dikumpulkan dan dibagikan”.
  • Diproses secara sementara (ephemeral)? Hanya jika data disimpan di memori cukup lama untuk melayani satu permintaan itu saja, seperti lokasi yang dikirim untuk mengambil cuaca dan tidak disimpan.
  • Wajib atau opsional? Opsional berarti pengguna dapat memilih apakah data itu dikumpulkan.
  • Untuk apa? Tujuan menurut Play adalah: App functionality, Analytics, Developer communications, Advertising or marketing, Fraud prevention, security, and compliance, Personalization, Account management. Pengumpulan dan pembagian masing-masing memiliki tujuannya sendiri.

Lalu dua pertanyaan keamanan. Apakah semua data pengguna dienkripsi saat transit? Hanya Anda yang bisa memeriksanya. Satu endpoint http:// biasa membuat jawabannya Tidak. Bisakah pengguna meminta penghapusan? Anda bisa menjawab Ya jika Anda menyediakan cara untuk memintanya, atau jika Anda menghapus data secara otomatis dalam 90 hari.

Jika aplikasi Anda memungkinkan pengguna membuat akun, pertanyaan Data deletion di formulir yang sama juga meminta tautan web tempat pengguna dapat meminta penghapusan akun (persyaratan penghapusan akun Google Play). Lihat panduan URL penghapusan akun.

Detail pembayaran yang dimasukkan di lembar penagihan Google Play sendiri tidak perlu dideklarasikan selama aplikasi Anda tidak pernah mengaksesnya. Catatan pembelian yang diterima aplikasi Anda atau sebuah SDK tetap harus Anda deklarasikan.

Langkah 3: pertanyaan Apple

Untuk setiap jenis data, Apple menanyakan tujuannya dan dua pertanyaan ya/tidak:

  • Ditautkan ke pengguna (linked to the user)? Data dihitung sebagai tertaut kecuali data itu dideidentifikasi sebelum dikumpulkan. Sebuah akun, user id, atau device id sudah cukup untuk menautkannya.
  • Digunakan untuk pelacakan (tracking)? Pelacakan berarti menggabungkan data aplikasi Anda tentang pengguna atau perangkat dengan data perusahaan lain untuk iklan bertarget atau pengukuran iklan, atau membagikannya kepada data broker. Sebuah SDK bisa melakukan ini meskipun Anda tidak pernah menggunakan fitur itu. Jika ada yang digunakan untuk pelacakan, aplikasi harus meminta izin terlebih dahulu melalui App Tracking Transparency (user privacy and data use Apple).

Tujuan menurut Apple adalah: Third-Party Advertising, Developer’s Advertising or Marketing, Analytics, Product Personalization, App Functionality, Other Purposes.

Apple mengizinkan Anda tidak mencantumkan suatu jenis data hanya jika keempat syarat terpenuhi. Data itu tidak boleh digunakan untuk pelacakan atau iklan. Data itu harus dikumpulkan hanya sesekali, di luar fungsi utama aplikasi, dan atas pilihan pengguna. Dan pengguna harus memberikannya secara sadar setiap kali. Sebagian besar data SDK gagal di syarat pertama.

Tiga jawaban yang sering salah

  1. “Kami tidak mengumpulkan apa pun.” Crash reporter dan analitik mengirim identifier perangkat dan data diagnostik, bahkan saat kode Anda sendiri tidak mengirim apa pun.
  2. “Tidak dibagikan” untuk SDK iklan. Jaringan iklan menerima identifier dan interaksi untuk tujuan periklanan mereka sendiri. Itu adalah berbagi.
  3. Formulir yang tidak sesuai dengan kebijakan privasi. Toko membaca keduanya bersamaan, jadi ketidaksesuaian saja sudah cukup menjadi masalah. Tulis keduanya dari daftar yang sama. Lihat saat keduanya tidak sejalan.

Menjaganya tetap terbaru

Jawaban Anda hanya sebaru daftar SDK Anda. Saat Anda menambahkan SDK, perbarui kedua formulir dan kebijakan privasi Anda dalam perubahan yang sama. Vendor juga merevisi pengungkapan mereka seiring versi SDK yang baru.

Biarkan asisten AI menemukan SDK-nya

Bagian yang lambat adalah langkah 1, dan coding agent yang dibuka di repositori aplikasi Anda bisa melakukannya untuk Anda: Claude Code, Cursor, Codex, dan sejenisnya. Prompt di bawah ini memintanya membaca hanya file build Anda dan menyebutkan setiap SDK dan fakta data beserta file asalnya. Prompt ini tidak menanyakan apa yang dikumpulkan setiap SDK. Ingatan sebuah model tentang pengungkapan vendor hanyalah tebakan, dan bagian itu seharusnya berasal dari vendor.

Asisten membalas dalam format JSON kecil yang dibaca dashboard AppFoyer. Tanpa AppFoyer, daftar yang ditunjukkannya kepada Anda di step 2 tetap menjadi daftar untuk mengisi kedua formulir.

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.

Dengan AppFoyer

Setiap aplikasi di dashboard memiliki tab Store forms. Centang SDK yang ada di build Anda, dan tab itu menyusun draf jawaban Data safety dan App Privacy dari SDK tersebut dan pengaturan aplikasi Anda. Setiap jawaban menyebutkan sumbernya: jawaban milik vendor sendiri, privacy manifest-nya, atau pembacaan kami atas daftar datanya. Tab ini menandai SDK yang tidak disebutkan dalam kebijakan privasi Anda, dan memberi Anda tautan penghapusan akun untuk ditempel. Plugin Claude Code mengisi daftar SDK dari file build Anda. Dengan asisten lain, salin prompt dari tab, jalankan, lalu tempel balasannya kembali: tab menampilkan jawaban yang tersirat darinya sebelum apa pun disimpan. Anda tetap memasukkan jawaban di setiap konsol dan memeriksanya di sana. Semua itu adalah draf, bukan nasihat hukum. Tab ini gratis di setiap paket.