Lompat ke konten utama

Privacy Manifest untuk Aplikasi iOS

Panduan kepatuhan 2026 dan troubleshooting PrivacyInfo.xcprivacy pada aplikasi iOS Capacitor: required reason APIs, ITMS-91053, ITMS-91061, dan manifest SDK pihak ketiga.

Privacy Manifest untuk Aplikasi iOS

Apple privacy manifest wajib digunakan saat upload ke App Store: setiap aplikasi memerlukan PrivacyInfo.xcprivacy yang menjelaskan pengumpulan data, domain tracking, dan semua API alasan yang diperlukan panggilan code Anda. SDK pihak ketiga pada daftar wajib Apple harus menyertakan manifest sendiri (dan tanda tangan saat didistribusikan sebagai biner). Panduan ini fokus pada kepatuhan 2026 dan troubleshooting untuk Capacitor iOS apps: what to declare, how to fix ITMS-91053 dan ITMS-91061, serta cara validasi sebelum submit.

Cakupan privacy manifest

Privacy manifest adalah property list yang dibundel dengan aplikasi atau SDK. Xcode akan menggabungkan setiap manifest saat proses archive menjadi satu laporan privasi.

Utama Kegunaan
NSPrivacyTracking Apakah aplikasi atau SDK Anda menggunakan data untuk tracking sesuai definisi Apple
NSPrivacyTrackingDomains Domain yang terlibat dalam tracking
NSPrivacyCollectedDataTypes Tipe data yang dikumpulkan dan cara penggunaannya
NSPrivacyAccessedAPITypes API alasan wajib yang Anda code gunakan, dengan kode alasan yang disetujui

Ringkasan Apple: Menambahkan privacy manifest ke aplikasi atau SDK pihak ketiga.

Anda bertanggung jawab atas semua code di dalam binary, termasuk SDK yang tertanam. Manifest Anda harus menjelaskan aplikasi Anda saja. Jangan menyalin praktik data SDK lain ke dalam file Anda.

Kategori alasan wajib API

Sejak 1 Mei 2024, App Store Connect menolak upload jika aplikasi Anda menggunakan API terdaftar tanpa alasan yang disetujui di NSPrivacyAccessedAPITypes. Apple mendokumentasikan API dan alasan yang disetujui di Menjelaskan penggunaan alasan wajib API.

Mulai dari Apple’s TN3183, nilai kategori adalah:

NSPrivacyAccessedAPIType nilai Pemicu umum pada aplikasi hybrid
NSPrivacyAccessedAPICategoryUserDefaults Settings, state plugin, persistensi kecil
NSPrivacyAccessedAPICategoryFileTimestamp Metadata file, cache, update bundles
NSPrivacyAccessedAPICategoryDiskSpace Cek sisa ruang sebelum download
NSPrivacyAccessedAPICategorySystemBootTime Waktu berjalan, timer, atau timestamp absolut
NSPrivacyAccessedAPICategoryActiveKeyboards Keyboard extension atau deteksi input

Untuk setiap kategori yang digunakan, tambahkan satu dictionary dengan NSPrivacyAccessedAPIType dan NSPrivacyAccessedAPITypeReasons. Pilih hanya reason codes yang terdaftar Apple untuk kategori tersebut. Kode yang salah bisa menyebabkan kegagalan review.

Contoh fragmen (sesuaikan kategori dan kode dengan aplikasi Anda setelah memeriksa privacy report):

<key>NSPrivacyAccessedAPITypes</key>
<array>
  <dict>
    <key>NSPrivacyAccessedAPIType</key>
    <string>NSPrivacyAccessedAPICategoryUserDefaults</string>
    <key>NSPrivacyAccessedAPITypeReasons</key>
    <array>
      <string>CA92.1</string>
    </array>
  </dict>
</array>

Capacitor sendiri muncul di daftar persyaratan SDK pihak ketiga, jadi framework ini menyertakan manifest untuk penggunaan API milik Capacitor. Anda tetap butuh manifest level aplikasi untuk layer native dan JavaScript, plugin, serta API apa pun yang tidak tercakup oleh dependensi.

ITMS-91053: deklarasi API hilang

ITMS-91053 berarti App Store Connect mendeteksi alasan API yang diperlukan dalam build Anda tanpa entri yang cocok di privacy manifest yang digabung.

Perbaiki:

  1. Baca email penolakan atau log upload. Di sana disebutkan kategori API tersebut (misalnya NSPrivacyAccessedAPICategoryDiskSpace).
  2. Buka laporan privasi archive di Xcode (Produk > Arsip, lalu Buat Laporan Privasi pada archive) dan cek apakah celahnya ada di app target atau dependency Anda.
  3. Jika API ada di dalam code atau plugin milik Anda, tambahkan kategori dan alasan yang disetujui ke ios/App/PrivacyInfo.xcprivacy.
  4. Jika API berasal dari dependency, upgrade pod atau package SPM ke versi yang menyertakan manifest, atau patch plugin dan deklarasikan hanya apa yang benar-benar dipanggil oleh fork Anda.
  5. Re-archive dan pastikan kategori muncul di laporan sebelum Anda upload kembali.

Jangan deklarasikan kategori yang tidak Anda gunakan. Analisis statis Apple terikat pada simbol di dalam binary.

ITMS-91061: privacy manifest pihak ketiga hilang

ITMS-91061 berarti SDK yang berdampak pada privasi di dalam app bundle Anda tidak memiliki PrivacyInfo.xcprivacy. Apple menyatakan bahwa saat Anda merilis aplikasi baru atau update yang menambahkan SDK yang terdaftar, maka SDK harus menyertakan manifest; SDK binary juga butuh signature dari vendor SDK.

Perbaiki:

  1. Salin path framework dari email (contohnya Frameworks/FirebaseCore.framework/FirebaseCore).
  2. Identifikasi paket CocoaPods, SPM, atau binary vendored.
  3. Upgrade ke rilis vendor yang membundel PrivacyInfo.xcprivacy di root framework.
  4. Clean, rebuild, dan verifikasi file di dalam .xcarchive sebelum upload.

Jangan memindahkan koleksi SDK atau deklarasi API ke dalam manifest aplikasi Anda. Apple memperingatkan secara eksplisit bahwa manifest aplikasi hanya boleh mendeskripsikan aplikasi tersebut. Jika SDK tidak lagi dikelola, ganti atau gunakan build vendor yang patuh.

SDK yang terdaftar mencakup stack mobile umum (Firebase, Flutter, Capacitor, shared_preferences_ios, dan lainnya). Cek daftar terbaru di situs Apple sebelum setiap rilis.

Manifest dan signature SDK pihak ketiga

Saat Anda memperbarui dependensi, Xcode memvalidasi bahwa binary framework telah ditandatangani oleh developer yang sama dengan rilis sebelumnya. Hal ini melindungi supply chain saat manifest berubah.

Workflow praktis:

  • Setelah pod install atau menyelesaikan SPM, cari ios/ untuk PrivacyInfo.xcprivacy file.
  • Archive dan gunakan Buat Laporan Privasi untuk melihat gambaran lengkapnya.
  • Bandingkan laporan tersebut dengan jawaban kuesioner privasi App Store Anda.

Untuk tooling live update, deklarasikan API alasan wajib yang benar-benar digunakan oleh updater Anda (misalnya disk space, file timestamps, atau user defaults). Akses jaringan bukan kategori API alasan wajib. Jika updater mengumpulkan data pribadi, ungkapkan data tersebut dalam label privasi App Store dan jawaban kuesioner Anda; mengambil update via HTTPS saja tidak membuat kategori pengungkapan baru. Tetap kepatuhan Capgo live update saat Anda mendokumentasikan perilaku OTA.

Tambah PrivacyInfo.xcprivacy pada proyek iOS Capacitor

  1. Sinkronkan proyek native: bunx cap sync ios.
  2. Buka workspace Xcode di ios/App.
  3. File &gt; New &gt; File, pilih Privasi Aplikasi (atau tambahkan PrivacyInfo.xcprivacy plist kosong).
  4. Simpan file di ios/App (folder yang sama dengan AppDelegate sudah benar).
  5. Pada target Build Phases &gt; Copy Bundle Resources, konfirmasi PrivacyInfo.xcprivacy sudah terdaftar.
  6. Isi tipe data tracking, data yang dikumpulkan, dan API alasan yang diperlukan sesuai dengan app dan plugin Anda.
  7. Archive, buat privacy report, dan perbaiki kategori yang kurang sebelum upload ke App Store Connect.

Jika Anda mengedit plist sebagai XML di disk, buka kembali Xcode agar target membership tetap benar.

Setiap app atau target SDK memiliki PrivacyInfo.xcprivacy. Saat melakukan archive, Xcode akan menggabungkan manifest tersebut ke dalam satu laporan privasi. Anda tidak perlu menggabungkan plist dependensi ke dalam file aplikasi secara manual.

Untuk plugin Capacitor kustom dikirim sebagai framework iOS tersendiri, tambahkan PrivacyInfo.xcprivacy di bawah plugin tersebut ios/Plugin/ folder (atau setara) dan daftarkan di target plugin pada Salin Bundle Resources, bukan hanya di target aplikasi.

Saat NSPrivacyTracking benar atau Anda menyematkan SDK iklan atau analitik, sesuaikan manifest dengan label privasi App Store dan tampilkan prompt App Tracking Transparency saat iOS memintanya. @capgo/capacitor-app-tracking-transparency mencakup alur ATT untuk aplikasi Capacitor.

Checklist validasi sebelum submit

  • Target aplikasi mencakup PrivacyInfo.xcprivacy di Salin Bundle Resources.
  • Setiap kategori alasan yang diperlukan dalam penolakan atau laporan memiliki kode alasan yang disetujui.
  • Setiap SDK pihak ketiga yang terdaftar dalam build menyertakan manifest sendiri di path yang sesuai.
  • Laporan privasi sesuai dengan pemahaman Anda tentang SDK analytics, ads, dan authentication.
  • Label privasi App Store selaras dengan laporan yang digabungkan.

FAQ

Apakah plugin Capacitor butuh privacy manifest sendiri?

Jika plugin didistribusikan sebagai source di repo Anda, penggunaan API miliknya adalah bagian dari binary app Anda. Deklarasikan API yang dipanggil plugin di app manifest, atau kontribusikan manifest di dalam target plugin jika dikirim sebagai framework terpisah. Binary pods harus mengikuti aturan SDK pihak ketiga dari Apple.

Bisakah saya memperbaiki ITMS-91061 hanya dengan mengedit PrivacyInfo.xcprivacy milik app saya?

Tidak. SDK harus menyertakan manifest tersebut. File Anda hanya boleh mendokumentasikan praktik privasi app Anda.

Di mana dokumentasi tanggal kebijakan Apple?

API alasan wajib: mulai diberlakukan sejak 1 Mei 2024. Aturan manifest dan tanda tangan pihak ketiga untuk SDK yang terdaftar ada di Persyaratan SDK pihak ketiga.

Lanjutkan dari Privacy Manifest untuk iOS Apps

Jika Anda menggunakan Privacy Manifest untuk iOS Apps untuk merencanakan keamanan dan kepatuhan, hubungkan dengan Enkripsi untuk detail implementasi di bagian Encryption, Kepatuhan untuk detail implementasi di Compliance, Pemindai Keamanan Capgo untuk alur kerja produk di Capgo Security Scanner, Keamanan Capgo untuk alur kerja produk di Capgo Security, dan Pusat Kepercayaan Capgo untuk alur kerja produk di Capgo Trust Center.

Live update untuk aplikasi Capacitor

Saat bug di web layer sudah live, kirim perbaikannya lewat Capgo alih-alih menunggu berhari-hari untuk persetujuan app store. Pengguna menerima update di background, sementara perubahan native tetap di jalur review normal.

Terbaru dari Blog kami

Capgo memberikan insight terbaik yang Anda butuhkan untuk membuat aplikasi mobile yang benar-benar profesional.