Privacy manifest Apple wajib untuk upload ke App Store: setiap aplikasi membutuhkan PrivacyInfo.xcprivacy yang menjelaskan pengumpulan data aplikasi Anda, domain tracking, dan 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 menggabungkan setiap manifest saat proses archive menjadi satu laporan privasi.
| Utama | Tujuan |
|---|---|
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 yang diperlukan oleh milik Anda code yang digunakan, dengan kode alasan yang disetujui |
Ringkasan dari Apple: Menambahkan privacy manifest ke aplikasi atau SDK pihak ketiga.
Anda bertanggung jawab atas semua code dalam binary, termasuk SDK yang tertanam. Manifest Anda harus menjelaskan hanya aplikasi Anda. 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 yang terdaftar tanpa alasan yang disetujui di NSPrivacyAccessedAPITypes. Apple mendokumentasikan API dan alasan yang disetujui di Menjelaskan penggunaan alasan wajib API.
Sejak Apple's TN3183, kategori nilainya 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 |
Elapsed time, 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 URL 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:
- Baca email penolakan atau upload log. Di sana disebutkan API-nya category (contohnya
NSPrivacyAccessedAPICategoryDiskSpace). - Buka laporan privasi archive di Xcode (Produk > Arsip, lalu Buat Laporan Privasi pada archive) dan cek apakah celahnya ada di app target Anda atau di dependency.
- Jika API ada di URL code atau plugin milik Anda, tambahkan kategori dan alasan yang disetujui ke
ios/App/PrivacyInfo.xcprivacy. - 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.
- 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:
- Salin path framework dari email (contohnya
Frameworks/FirebaseCore.framework/FirebaseCore). - Identifikasi CocoaPods, SPM, atau paket binary vendored.
- Upgrade ke rilis vendor yang membundel
PrivacyInfo.xcprivacydi root framework. - Clean, rebuild, dan verifikasi file di dalam
.xcarchivesebelum upload.
Jangan pindahkan koleksi SDK atau deklarasi API ke dalam app manifest Anda. Apple memperingatkan secara eksplisit bahwa app manifest hanya boleh mendeskripsikan aplikasi. 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 installatau menyelesaikan SPM, cariios/untukPrivacyInfo.xcprivacytersebut. - Arsip 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 live update Capgo perlu diingat saat mendokumentasikan perilaku OTA.
Tambah PrivacyInfo.xcprivacy pada proyek iOS Capacitor
- Sinkronkan proyek native:
bunx cap sync ios. - Buka workspace Xcode di
ios/App. - File > New > File, pilih Privasi Aplikasi (atau tambahkan
PrivacyInfo.xcprivacyplist kosong). - Simpan file di
ios/App(folder yang sama denganAppDelegatesudah oke). - Pada target Build Phases > Copy Bundle Resources, pastikan
PrivacyInfo.xcprivacysudah terdaftar. - Isi tracking, tipe data yang dikumpulkan, dan required reason API sesuai dengan app dan plugin Anda.
- Archive, buat laporan privasi, 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.xcprivacymasing-masing. Saat Anda melakukan archive, Xcode menggabungkan manifest tersebut menjadi satu laporan privasi. Anda tidak perlu menggabungkan plist dependency ke file app 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/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.xcprivacydi 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 dalam 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 Aplikasi iOS untuk merencanakan keamanan dan kepatuhan, hubungkan dengan Enkripsi untuk detail implementasi pada Encryption, Kepatuhan untuk detail implementasi pada Compliance, Capgo Pemindai Keamanan untuk alur kerja produk di Capgo Security Scanner, Keamanan Capgo untuk alur kerja produk di Capgo Security, dan Capgo Pusat Kepercayaan untuk workflow produk di Capgo Trust Center.