Belajar Mobile Developer - Privacy & Compliance Mobile
Episode 20 of 28

Belajar Mobile Developer - Privacy & Compliance Mobile

Melindungi data pengguna dan mematuhi regulasi: permission model di Android & iOS, prinsip GDPR & data minimization, serta langkah audit privasi menyeluruh untuk Fitku sebelum rilis

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

Kita telah membangun fitur, mengamankan kode (episode 13), dan memasang telemetry (episode 19). Kini dimensi terakhir yang sering dilupakan: privasi & compliance. Di episode 20 ini kita mempelajari permission model, prinsip GDPR, dan data minimization — lalu melakukan audit privasi untuk Fitku.

Mengapa ini krusial di 2026? Karena regulasi (GDPR, CCPA, UU Perlindungan Data Pribadi di Indonesia) makin tegas, dan kedua store mewajibkan data safety yang jujur. Pelanggaran berujung denda besar dan reputasi hancur — sementara aplikasi yang menghormati privasi justru membangun kepercayaan, aset paling berharga.

Permission Model: Minta Minimal, Jelaskan Tujuan

Android

Android memakai runtime permissions: user menyetujui saat fitur dipakai, bukan saat install.

AndroidManifest: deklarasi permission
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.CAMERA" />

Meminta di runtime dengan konteks jelas:

KotlinRuntime permission dengan konteks
fun requestLocation() {
    if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
        != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this, arrayOf(
            Manifest.permission.ACCESS_FINE_LOCATION
        ), REQ_LOCATION)
    }
}
 
override fun onRequestPermissionsResult(...) {
    // jelaskan konsekuensi jika ditolak
    if (!granted) showSnackbar("Tanpa lokasi, rute lari tidak tersimpan.")
}

Aturan emas Android: minta permission tepat saat dibutuhkan, jelaskan alasan, dan beri graceful fallback saat ditolak.

iOS

iOS serupa dengan Usage Descriptions wajib di Info.plist:

Info.plist: usage description
<key>NSLocationWhenInUseUsageDescription</key>
<string>Fitku menggunakan lokasi untuk melacak rute lari Anda.</string>
<key>NSCameraUsageDescription</key>
<string>Fitku menggunakan kamera untuk memindai kode workout.</string>

Tanpa deskripsi ini, aplikasi crash saat memanggil API terkait — dan tanpa deskripsi yang jujur, review App Store menolak (episode 18).

Important

Permission adalah bentuk kepercayaan. Pengguna boleh bertanya-tanya mengapa aplikasi fitness butuh akses kontak. Audit setiap permission: apakah benar-benar dibutuhkan? Jika ragu, hapus. Lebih sedikit permission = lebih sedikit risiko & lebih cepat lolos review.

Prinsip GDPR & Regulasi

GDPR (Eropa) dan regulasi serupa di banyak negara (termasuk UU PDP Indonesia) berakar pada prinsip yang sama:

  • Lawful basis: data dikumpulkan dengan dasar sah (consent, kontrak, kepentingan sah).
  • Data minimization: hanya kumpulkan data yang benar-benar diperlukan.
  • Purpose limitation: data dipakai hanya untuk tujuan yang disampaikan.
  • Storage limitation: hapus data yang tidak lagi dibutuhkan.
  • User rights: akses, perbaikan, hapus, dan portability data — pengguna harus bisa memintanya.
Pertanyaan audit privasi
Data apa yang dikumpulkan?          → contoh: email, langkah harian, lokasi rute
Untuk apa?                          → contoh: akun, progres, rute lari
Berapa lama disimpan?               → contoh: selama akun aktif, lalu 30 hari
Ke mana dikirim?                    → contoh: server Fitku + Firebase Analytics
Bagaimana pengguna bisa menghapus?  → contoh: tombol "Hapus akun & data"

Untuk pengguna di bawah umur, banyak regulasi (COPPA/children's code) memerlukan persetujuan orang tua — pastikan fitur-nya kalian nilai sejak desain.

Data Minimization dalam Praktik

Prinsipnya sederhana: jangan kumpulkan apa yang tidak perlu. Contoh nyata untuk Fitku:

  • Lokasi akurat hanya saat tracking rute aktif — nonaktif setelah workout selesai.
  • Jangan mengumpulkan kontak untuk fitur "ajak teman" jika hanya butuh alamat email sekali pakai.
  • Anonimkan analytics: hash user ID, jangan kirim email mentah (episode 19).
  • Hapus data workout yang sudah disinkronkan & disetujui pengguna sesuai kebijakan.

Warning

"Sekalian saja kumpulkan semua, siapa tahu berguna" adalah pola pikir berbahaya. Setiap data baru menambah tanggung jawab (bocor? disalahgunakan? diaudit?). Minimalkan sejak desain — fitur "berguna nanti" biasanya tidak pernah dipakai.

Fitur yang Wajib Ada

Setiap aplikasi yang mengumpulkan data pribadi wajib menyediakan:

  1. Privacy policy — halaman web yang mudah diakses (link di store, pengaturan).
  2. Kontrol dalam aplikasi — pengaturan data & permission yang bisa diubah kapan pun.
  3. Mekanisme hapus akun — wajib di kedua store; proses yang benar-benar berfungsi.
  4. Export data — memenuhi right to data portability.
  5. Consent yang jelas — bukan "scroll terus berarti setuju" untuk data sensitif.
KotlinAlur hapus akun Fitku
fun deleteAccount(userId: String) {
    viewModelScope.launch {
        // 1. panggil backend untuk hapus data server
        api.deleteAccount(userId)
        // 2. hapus data lokal
        localDb.clearAll()
        prefs.clearAll()
        // 3. logout + navigasi ke layar welcome
        navigator.navigateTo("welcome")
    }
}

Praktik: Audit Privasi Fitku

Lakukan audit berlapis:

Checklist audit privasi
[ ] Inventarisasi semua data yang dikumpulkan (API, analytics, SDK pihak ketiga)
[ ] Tulis data flow: dari UI → storage → server → vendor
[ ] Verifikasi tiap permission punya alasan & usage description
[ ] Perbarui privacy policy & data safety sesuai temuan
[ ] Uji semua alur consent & hapus akun dari UI sampai server
[ ] Dokumentasikan kebijakan retensi & penghapusan

Buat audit ini rutin (misal setiap kuartal) — SDK dan fitur baru selalu menambah jejak data.

Common Pitfalls Privacy

  • Meminta semua permission di onboarding: user ketakutan lalu uninstall.
  • Data safety tidak sinkron dengan kode: store menuntut kejujuran; audit ulang tiap rilis.
  • Mengabaikan rights request: "hak untuk dihapus" yang tidak berfungsi = pelanggaran serius.
  • SDK pihak ketiga tak teraudit: analytics SDK kalian sendiri bisa menyimpan data yang tak kalian sadari.
  • Mengumpulkan data anak tanpa consent: regulasi khusus, sanksi berat.

Tip

Mulai privacy by design dari awal, bukan tempelan di akhir. Tiap kali sebuah fitur butuh data baru, tanya tiga hal: perlu? minimal? transparan? Tiga pertanyaan ini menyelamatkan kalian dari utang teknis & hukum di masa depan.

Penutup

Pada episode 20 ini, kalian telah menguasai dimensi privasi:

  • Permission model: minta minimal, tepat waktu, jelaskan tujuan, beri fallback.
  • Prinsip GDPR/UU PDP: lawful basis, data minimization, dan hak pengguna.
  • Fitur wajib: privacy policy, kontrol data, hapus akun, export.
  • Audit privasi berlapis sebagai praktik rutin.

Di episode 21 selanjutnya kita masuk era baru: AI-Powered Mobile Apps — on-device ML (ML Kit/CoreML), integrasi LLM, dan fitur AI di Fitku. Sampai jumpa!

Belajar Mobile Developer - Privacy & Compliance Mobile | Belajar Mobile Developer