ITMS-91064: cum repari „Invalid tracking information”
De Mehdi Azizi
Publicat pe , 5 min.
ITMS-91064 înseamnă că NSPrivacyTracking și NSPrivacyTrackingDomains se contrazic în manifestul de confidențialitate. Pune-le de acord și refă build-ul.
ITMS-91064 este o respingere automată de la Apple, trimisă pe e-mail după ce îți livrezi build-ul. Înseamnă că cele două chei de tracking din manifestul tău de confidențialitate se contrazic. Soluția: pune de acord NSPrivacyTracking și NSPrivacyTrackingDomains, apoi refă build-ul.
Am primit-o pe TradaZen, aplicația mea de antrenament pentru trading, după ce am adăugat un instrument de măsurare a reclamelor. Uite cauza și soluția.
Ce înseamnă eroarea ITMS-91064?
Mesajul se numește „ITMS-91064: Invalid tracking information”. Se referă la un fișier PrivacyInfo.xcprivacy, manifestul de confidențialitate pe care îl poate include fiecare aplicație și fiecare SDK. Fișierul conține, printre altele, două chei legate de tracking, în sensul App Tracking Transparency:
NSPrivacyTracking: adevărat dacă aplicația sau SDK-ul folosește date pentru tracking.NSPrivacyTrackingDomains: lista domeniilor contactate pentru acest tracking.
Apple descrie cele trei combinații respinse în nota tehnică despre manifestele invalide:
NSPrivacyTrackingeste adevărat și lista de domenii e goală. Trebuie să completezi lista. Ăsta a fost cazul meu.NSPrivacyTrackingeste adevărat, dar un domeniu e scris greșit. Un domeniu se scrie fără cale și fără bară la final.- Sunt listate domenii, deși
NSPrivacyTrackingeste fals. Trebuie să scoți lista.
Regula de bază e în documentația despre manifestele de confidențialitate: când NSPrivacyTracking este adevărat, trebuie să furnizezi lista de domenii.
E-mailul de la Apple îți dă numele și calea fișierului cu problema. Citește calea: îți spune dacă problema vine din manifestul aplicației tale sau din cel al unui SDK inclus.
Ca la celelalte erori ITMS, nu e respingerea unui reviewer. Verificarea e automată, la livrarea build-ului, iar build-ul e eliminat.
De ce se întâmplă: câte un manifest pentru fiecare target
Aici e capcana. Un SDK vine adesea cu propriul manifest, cu domeniile lui. Ai putea crede că ajunge. Dar și aplicația ta are unul, iar la mine Apple a respins tocmai manifestul aplicației.
Cazul meu, pe 21 iulie 2026. Când am conectat un instrument de măsurare a reclamelor la TradaZen, am declarat NSPrivacyTracking: true în configurația aplicației, ceea ce e corect. Dar n-am adăugat NSPrivacyTrackingDomains. Manifestul SDK-ului era complet. Cel al aplicației, generat de Expo din configurația mea, spunea „adevărat” cu o listă goală. Build-ul a fost respins la procesare.
Lecția: manifestul SDK-ului nu îl acoperă pe cel al aplicației tale. Dacă declari tracking în configurație, declari și domeniile.
Cum repari ITMS-91064 într-o aplicație Expo
Cu Expo, manifestul aplicației se setează în configurație, sub ios.privacyManifests. Principiul e explicat în documentația Expo despre confidențialitate, iar cheia în referința de configurare.
- Găsește domeniile de tracking ale SDK-ului. Copiază lista din manifestul versiunii pe care o include build-ul tău, nu pe cea a ultimei versiuni publicate: pot fi diferite. Nu le inventa.
- Adaugă-le în configurație. Cele două domenii de mai jos sunt exemple pe care trebuie să le înlocuiești:
{
"expo": {
"ios": {
"privacyManifests": {
"NSPrivacyTracking": true,
"NSPrivacyTrackingDomains": [
"example-tracking-domain.com",
"another-tracking-domain.com"
]
}
}
}
}
- Verifică fișierul generat înainte să plătești un build, dacă folderul
iose generat de Expo și ignorat de git. Ruleazănpx expo prebuild -p ios, apoi deschide fișierulPrivacyInfo.xcprivacycreat în folderulios. Trebuie să conținăNSPrivacyTrackingcu valoareatrueși lista completă de domenii. - Refă build-ul și retrimite-l. Manifestul face parte din binar: un update la distanță nu îl modifică.
Atenție la pasul 3: comanda poate șterge și recrea folderul ios. Dacă ai făcut modificări manuale acolo, nu o rula pe proiectul tău. Lucrează pe o copie.
Dacă aplicația ta nu face deloc tracking, drumul e mai scurt: setează NSPrivacyTracking pe false și scoate lista.
Ce schimbă aceste domenii pentru utilizatorii tăi
Declararea domeniilor nu e o formalitate. Conform documentației Apple, dacă utilizatorul n-a acceptat tracking-ul în fereastra App Tracking Transparency, cererile către aceste domenii eșuează. E comportamentul așteptat: tracking-ul pleacă doar dacă persoana a spus da.
Pagina ta din App Store trebuie să spună același lucru. Dacă manifestul declară tracking, declarațiile de confidențialitate de pe pagină și politica de confidențialitate trebuie să o spună și ele. Altfel riști ulterior respingerea unui reviewer, conform guidelines 5.1.1 sau 5.1.2: detaliile sunt în politica de confidențialitate a unei aplicații.
Trimite-ți build-ul fără surprize neplăcute
Erorile ITMS se repară repede când știi să le citești. Respingerile care vin după cer mai multă atenție: pașii sunt pe pagina aplicație respinsă de Apple, iar motivele cele mai frecvente în de ce respinge Apple o aplicație.
Ca să-ți verifici dosarul înainte de trimitere, Apple Review Kit adună checklist-ul meu și skill-uri Claude Code care îți recitesc proiectul. Dacă trimiterea se blochează și vrei o privire umană, rezervă o oră cu mine: ne uităm pe proiectul tău prin video, pe ecranul tău. Și dacă îți pregătești prima lansare, fă diagnosticul gratuit: îți pune pașii în ordine și îți trimite checklist-ul meu anti-respingere Apple.
Întrebări frecvente
ITMS-91064 este o respingere App Review?
Nu în sensul unui reviewer uman. E o verificare automată făcută pe build la livrare, înainte de review. Build-ul e eliminat: trebuie să corectezi manifestul de confidențialitate și să trimiți un build nou.
Ce trebuie pus în NSPrivacyTrackingDomains?
Domeniile pe care aplicația sau SDK-urile tale le contactează pentru tracking. Copiază-le pe cele listate de SDK în manifestul versiunii pe care o include build-ul tău. O listă goală cu NSPrivacyTracking pe true e una dintre combinațiile pe care Apple le respinge.
Nu ajunge manifestul SDK-ului meu?
Nu. Pe TradaZen, manifestul SDK-ului era complet și build-ul a fost totuși respins: cel al aplicației declara tracking fără niciun domeniu. Dacă configurația aplicației tale declară tracking, trebuie să listeze și domeniile.
Aplicația mea nu face tracking: ce fac?
Setează NSPrivacyTracking pe false în configurație și scoate lista de domenii. Apoi verifică dacă pagina din App Store și politica de confidențialitate spun același lucru.
Pot repara ITMS-91064 fără să refac build-ul?
Nu. Manifestul de confidențialitate face parte din binarul trimis la Apple. Trebuie să corectezi configurația, să refaci build-ul și să-l retrimiți.