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:
- Baca email penolakan atau log upload. Di sana disebutkan kategori API tersebut (misalnya
NSPrivacyAccessedAPICategoryDiskSpace). - 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.
- Jika API ada di dalam 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 paket CocoaPods, SPM, atau binary vendored.
- Upgrade ke rilis vendor yang membundel
PrivacyInfo.xcprivacydi root framework. - Clean, rebuild, dan verifikasi file di dalam
.xcarchivesebelum 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 installatau menyelesaikan SPM, cariios/untukPrivacyInfo.xcprivacyfile. - 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
- 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 benar). - Pada target Build Phases > Copy Bundle Resources, konfirmasi
PrivacyInfo.xcprivacysudah terdaftar. - Isi tipe data tracking, data yang dikumpulkan, dan API alasan yang diperlukan sesuai dengan app dan plugin Anda.
- 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.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 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.