ITMS-91064: betulkan “Invalid tracking information”
Oleh Mehdi Azizi
Diterbitkan pada , 5 min
ITMS-91064 bermaksud dua kunci penjejakan dalam manifest privasi anda bercanggah. Selaraskan NSPrivacyTracking dan NSPrivacyTrackingDomains, kemudian build semula.
ITMS-91064 ialah penolakan automatik daripada Apple, dihantar melalui e-mel selepas build anda dihantar. Maksudnya, dua kunci penjejakan dalam manifest privasi anda bercanggah antara satu sama lain. Cara membetulkannya: selaraskan NSPrivacyTracking dan NSPrivacyTrackingDomains, kemudian buat build semula.
Saya terkena ralat ini pada TradaZen, app latihan trading saya, selepas menambah alat pengukuran iklan. Berikut puncanya dan cara membetulkannya.
Apakah maksud ralat ITMS-91064?
Mesej itu bertajuk "ITMS-91064: Invalid tracking information". Ia merujuk kepada fail PrivacyInfo.xcprivacy, iaitu manifest privasi yang boleh disertakan oleh setiap app dan setiap SDK. Fail ini mengandungi antara lain dua kunci berkaitan penjejakan, dalam erti kata App Tracking Transparency:
NSPrivacyTracking: bernilai true jika app atau SDK menggunakan data untuk penjejakan.NSPrivacyTrackingDomains: senarai domain yang dihubungi untuk penjejakan itu.
Apple menerangkan tiga kombinasi yang ditolak dalam nota teknikalnya tentang manifest tidak sah:
NSPrivacyTrackingbernilai true dan senarai domain kosong. Anda perlu mengisi senarai itu. Ini kes saya.NSPrivacyTrackingbernilai true tetapi ada domain yang ditulis salah. Domain ditulis tanpa path dan tanpa garis miring di hujung.- Ada domain disenaraikan sedangkan
NSPrivacyTrackingbernilai false. Anda perlu membuang senarai itu.
Peraturan asasnya ada dalam dokumentasi tentang manifest privasi: apabila NSPrivacyTracking bernilai true, anda mesti menyediakan senarai domain.
E-mel Apple memberikan nama dan path fail yang bermasalah. Baca path itu: ia menunjukkan sama ada masalahnya datang daripada manifest app anda atau manifest SDK yang disertakan.
Seperti ralat ITMS yang lain, ini bukan penolakan oleh reviewer. Semakan ini automatik, berlaku semasa build dihantar, dan build itu ditolak.
Kenapa ia berlaku: satu manifest bagi setiap target
Inilah perangkapnya. SDK selalunya membawa manifestnya sendiri, lengkap dengan domainnya. Anda mungkin sangka itu sudah cukup. Tetapi app anda juga ada manifest sendiri, dan manifest app itulah yang ditolak oleh Apple dalam kes saya.
Kes saya, 21 Julai 2026. Semasa memasang alat pengukuran iklan pada TradaZen, saya mengisytiharkan NSPrivacyTracking: true dalam konfigurasi app, dan itu memang betul. Tetapi saya tidak menambah NSPrivacyTrackingDomains. Manifest SDK lengkap. Manifest app pula, yang dijana oleh Expo daripada konfigurasi saya, menyatakan "true" dengan senarai kosong. Build itu ditolak semasa pemprosesan.
Pengajarannya: manifest SDK tidak meliputi manifest app anda. Jika anda mengisytiharkan penjejakan dalam konfigurasi, anda juga mesti mengisytiharkan domainnya.
Membetulkan ITMS-91064 dalam app Expo
Dengan Expo, manifest app ditetapkan dalam konfigurasi, di bawah ios.privacyManifests. Prinsipnya ada dalam dokumentasi Expo tentang privasi, dan kuncinya dalam rujukan konfigurasi.
- Cari domain penjejakan SDK. Salin senarai daripada manifest versi yang disertakan dalam build anda, bukan versi terbaharu dalam talian: kedua-duanya mungkin berbeza. Jangan reka domain.
- Tambahkannya ke konfigurasi anda. Dua domain di bawah hanyalah contoh yang perlu diganti:
{
"expo": {
"ios": {
"privacyManifests": {
"NSPrivacyTracking": true,
"NSPrivacyTrackingDomains": [
"example-tracking-domain.com",
"another-tracking-domain.com"
]
}
}
}
}
- Semak fail yang dijana sebelum membayar untuk build, jika folder
iosanda dijana oleh Expo dan diabaikan oleh git. Jalankannpx expo prebuild -p ios, kemudian buka failPrivacyInfo.xcprivacyyang dicipta dalam folderios. Ia mesti mengandungiNSPrivacyTrackingbernilaitruedan senarai domain yang lengkap. - Buat build semula dan hantar sekali lagi. Manifest ialah sebahagian daripada binari: kemas kini jarak jauh tidak mengubahnya.
Berhati-hati dengan langkah 3: arahan ini boleh memadam lalu mencipta semula folder ios. Jika anda pernah mengubah folder itu secara manual, jangan jalankannya pada projek anda. Gunakan salinan.
Jika app anda tidak melakukan sebarang penjejakan, jalannya lebih pendek: tukar NSPrivacyTracking kepada false dan buang senarai itu.
Apa kesan domain ini kepada pengguna anda
Mengisytiharkan domain ini bukan sekadar formaliti. Menurut dokumentasi Apple, jika pengguna tidak menerima penjejakan dalam tetingkap App Tracking Transparency, permintaan ke domain ini akan gagal. Itulah tingkah laku yang dijangka: penjejakan hanya berlaku jika pengguna bersetuju.
Halaman App Store anda mesti menyatakan perkara yang sama. Jika manifest anda mengisytiharkan penjejakan, pengisytiharan privasi di halaman anda dan dasar privasi anda juga mesti menyatakannya. Jika tidak, anda berisiko ditolak oleh reviewer selepas itu, di bawah guideline 5.1.1 atau 5.1.2: butirannya ada dalam dasar privasi sesebuah aplikasi.
Hantar build anda tanpa kejutan
Ralat ITMS cepat dibetulkan apabila anda tahu cara membacanya. Penolakan yang datang selepas itu memerlukan lebih banyak pertimbangan: langkah-langkahnya ada di halaman aplikasi ditolak oleh Apple, dan sebab paling biasa ada dalam kenapa Apple menolak app.
Untuk menyemak projek anda sebelum dihantar, Apple Review Kit menghimpunkan senarai semak saya dan skill Claude Code yang menyemak projek anda. Jika penghantaran anda tersekat dan anda mahukan pandangan manusia, tempah satu jam dengan saya: kita semak projek anda melalui panggilan video, di skrin anda. Dan jika anda sedang menyediakan pelancaran pertama, buat diagnostik percuma anda: ia menyusun semula langkah-langkah mengikut urutan dan menghantar senarai semak anti-penolakan Apple saya kepada anda.
Soalan lazim
Adakah ITMS-91064 penolakan App Review?
Bukan dalam erti kata reviewer manusia. Ia semakan automatik ke atas build semasa dihantar, sebelum masuk ke semakan. Build itu ditolak: anda perlu membetulkan manifest privasi dan menghantar build baharu.
Apa yang perlu dimasukkan dalam NSPrivacyTrackingDomains?
Domain yang dihubungi oleh app atau SDK anda untuk penjejakan. Salin domain yang disenaraikan oleh SDK dalam manifest versi yang disertakan dalam build anda. Senarai kosong dengan NSPrivacyTracking bernilai true ialah salah satu kombinasi yang ditolak oleh Apple.
Tidakkah manifest SDK saya sudah cukup?
Tidak. Pada TradaZen, manifest SDK lengkap tetapi build tetap ditolak: manifest app mengisytiharkan penjejakan tanpa sebarang domain. Jika konfigurasi app anda mengisytiharkan penjejakan, ia juga mesti menyenaraikan domainnya.
App saya tidak melakukan penjejakan: apa yang perlu dibuat?
Tukar NSPrivacyTracking kepada false dalam konfigurasi anda dan buang senarai domain. Kemudian pastikan halaman App Store dan dasar privasi anda menyatakan perkara yang sama.
Bolehkah ITMS-91064 dibetulkan tanpa build semula?
Tidak. Manifest privasi ialah sebahagian daripada binari yang dihantar kepada Apple. Anda perlu membetulkan konfigurasi, buat build semula dan hantar sekali lagi.