ITMS-91064: jak naprawić „Invalid tracking information”
Autor: Mehdi Azizi
Opublikowano , 5 min
ITMS-91064 oznacza, że NSPrivacyTracking i NSPrivacyTrackingDomains w manifeście prywatności są sprzeczne. Uzgodnij je i zrób nowy build.
ITMS-91064 to automatyczne odrzucenie od Apple, które przychodzi mailem po wysłaniu buildu. Oznacza, że dwa klucze dotyczące śledzenia w twoim manifeście prywatności sobie przeczą. Rozwiązanie: uzgodnij NSPrivacyTracking i NSPrivacyTrackingDomains, a potem zrób nowy build.
Trafiłem na to w TradaZen, mojej aplikacji do treningu tradingu, po dodaniu narzędzia do pomiaru reklam. Oto przyczyna i poprawka.
Co oznacza błąd ITMS-91064?
Wiadomość nosi tytuł „ITMS-91064: Invalid tracking information”. Dotyczy pliku PrivacyInfo.xcprivacy, czyli manifestu prywatności, który może zawierać każda aplikacja i każdy SDK. Ten plik zawiera między innymi dwa klucze związane ze śledzeniem w rozumieniu App Tracking Transparency:
NSPrivacyTracking: true, jeśli aplikacja lub SDK używa danych do śledzenia.NSPrivacyTrackingDomains: lista domen, z którymi łączy się w celu śledzenia.
Apple opisuje trzy odrzucane kombinacje w swojej nocie technicznej o nieprawidłowych manifestach:
NSPrivacyTrackingma wartość true, a lista domen jest pusta. Trzeba uzupełnić listę. To był mój przypadek.NSPrivacyTrackingma wartość true, ale domena jest źle zapisana. Domenę zapisuje się bez ścieżki i bez ukośnika na końcu.- Domeny są wymienione, a
NSPrivacyTrackingma wartość false. Trzeba usunąć listę.
Zasadę ogólną znajdziesz w dokumentacji o manifestach prywatności: gdy NSPrivacyTracking ma wartość true, trzeba podać listę domen.
Mail od Apple podaje nazwę i ścieżkę błędnego pliku. Przeczytaj tę ścieżkę: mówi, czy problem leży w manifeście twojej aplikacji, czy w manifeście dołączonego SDK.
Jak przy innych błędach ITMS, to nie jest odrzucenie przez reviewera. Kontrola jest automatyczna, przy wysyłce buildu, a build zostaje odrzucony.
Dlaczego tak się dzieje: jeden manifest na target
To jest pułapka. SDK często ma własny manifest ze swoimi domenami. Możesz myśleć, że to wystarczy. Ale twoja aplikacja też ma swój, i u mnie Apple odrzuciło właśnie manifest aplikacji.
Mój przypadek, 21 lipca 2026. Podpinając narzędzie do pomiaru reklam w TradaZen, zadeklarowałem NSPrivacyTracking: true w konfiguracji aplikacji, co było zgodne z prawdą. Ale nie dodałem NSPrivacyTrackingDomains. Manifest SDK był kompletny. Manifest aplikacji, wygenerowany przez Expo z mojej konfiguracji, mówił „true” z pustą listą. Build został odrzucony podczas przetwarzania.
Lekcja: manifest SDK nie zastępuje manifestu twojej aplikacji. Jeśli deklarujesz śledzenie w konfiguracji, deklarujesz też domeny.
Jak naprawić ITMS-91064 w aplikacji Expo
W Expo manifest aplikacji ustawiasz w konfiguracji, pod ios.privacyManifests. Zasada jest opisana w dokumentacji Expo o prywatności, a klucz w dokumentacji konfiguracji.
- Znajdź domeny śledzenia SDK. Skopiuj listę z manifestu wersji, którą zawiera twój build, a nie z najnowszej wersji online: mogą się różnić. Nie wymyślaj ich.
- Dodaj je do konfiguracji. Dwie poniższe domeny to przykłady do podmiany:
{
"expo": {
"ios": {
"privacyManifests": {
"NSPrivacyTracking": true,
"NSPrivacyTrackingDomains": [
"example-tracking-domain.com",
"another-tracking-domain.com"
]
}
}
}
}
- Sprawdź wygenerowany plik, zanim zapłacisz za build, jeśli twój folder
iosjest generowany przez Expo i ignorowany przez git. Uruchomnpx expo prebuild -p ios, a potem otwórz plikPrivacyInfo.xcprivacyutworzony w folderzeios. Musi zawieraćNSPrivacyTrackingustawione natruei pełną listę domen. - Zrób nowy build i wyślij go ponownie. Manifest jest częścią binarki: aktualizacja zdalna go nie zmieni.
Uwaga na krok 3: ta komenda może usunąć i odtworzyć folder ios. Jeśli wprowadzałeś tam ręczne zmiany, nie uruchamiaj jej na swoim projekcie. Pracuj na kopii.
Jeśli twoja aplikacja w ogóle nie śledzi, droga jest krótsza: ustaw NSPrivacyTracking na false i usuń listę.
Co te domeny zmieniają dla twoich użytkowników
Deklarowanie tych domen to nie formalność. Według dokumentacji Apple, jeśli użytkownik nie zgodził się na śledzenie w oknie App Tracking Transparency, żądania do tych domen kończą się błędem. Tak ma być: śledzenie działa tylko wtedy, gdy osoba powiedziała tak.
Twoja strona w App Store musi mówić to samo. Jeśli manifest deklaruje śledzenie, deklaracje prywatności na stronie aplikacji i twoja polityka prywatności też muszą o tym mówić. Inaczej ryzykujesz później odrzucenie przez reviewera na podstawie wytycznych 5.1.1 lub 5.1.2: szczegóły znajdziesz w artykule polityka prywatności aplikacji.
Wyślij build bez przykrych niespodzianek
Błędy ITMS naprawia się szybko, gdy wiesz, jak je czytać. Odrzucenia, które przychodzą później, wymagają więcej dystansu: sposób postępowania opisałem na stronie aplikacja odrzucona przez Apple, a najczęstsze powody w artykule dlaczego Apple odrzuca aplikację.
Żeby sprawdzić wszystko przed wysyłką, Apple Review Kit zawiera moją checklistę i skille Claude Code, które przeglądają twój projekt. Jeśli wysyłka utknęła i chcesz, żeby spojrzał na to człowiek, zarezerwuj ze mną godzinę: przejdziemy przez twój projekt na wideorozmowie, na twoim ekranie. A jeśli przygotowujesz swoją pierwszą publikację, zrób darmową diagnozę: uporządkuje kolejne kroki i wyśle ci moją checklistę przeciw odrzuceniom przez Apple.
Najczęściej zadawane pytania
Czy ITMS-91064 to odrzucenie przez App Review?
Nie w sensie odrzucenia przez człowieka. To automatyczna kontrola buildu przy wysyłce, zanim trafi do przeglądu. Build zostaje odrzucony: trzeba poprawić manifest prywatności i wysłać nowy build.
Co wpisać w NSPrivacyTrackingDomains?
Domeny, z którymi twoja aplikacja lub SDK łączą się w celu śledzenia. Skopiuj te, które SDK wymienia w manifeście wersji zawartej w twoim buildzie. Pusta lista przy NSPrivacyTracking ustawionym na true to jedna z kombinacji, które Apple odrzuca.
Czy manifest mojego SDK nie wystarczy?
Nie. W TradaZen manifest SDK był kompletny, a build i tak został odrzucony: manifest aplikacji deklarował śledzenie bez żadnej domeny. Jeśli konfiguracja twojej aplikacji deklaruje śledzenie, musi też wymieniać domeny.
Moja aplikacja nie śledzi: co zrobić?
Ustaw NSPrivacyTracking na false w konfiguracji i usuń listę domen. Potem sprawdź, czy twoja strona w App Store i polityka prywatności mówią to samo.
Czy można naprawić ITMS-91064 bez nowego buildu?
Nie. Manifest prywatności jest częścią binarki wysłanej do Apple. Trzeba poprawić konfigurację, zrobić nowy build i wysłać go ponownie.