# ITMS-91064: jak naprawić „Invalid tracking information”

> ITMS-91064 oznacza, że NSPrivacyTracking i NSPrivacyTrackingDomains w manifeście prywatności są sprzeczne. Uzgodnij je i zrób nowy build.

Oryginalna strona: [ITMS-91064: jak naprawić „Invalid tracking information”](https://devoria.fr/pl/blog/itms-91064-invalid-tracking-information)
Autor: [Mehdi Azizi](https://devoria.fr/pl/mehdi-azizi)
Publikacja: 2026-10-16
Ostatnia aktualizacja treści: 2026-10-16


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](https://developer.apple.com/documentation/technotes/tn3181-debugging-invalid-privacy-manifest):

- `NSPrivacyTracking` ma wartość true, a lista domen jest pusta. Trzeba uzupełnić listę. To był mój przypadek.
- `NSPrivacyTracking` ma wartość true, ale domena jest źle zapisana. Domenę zapisuje się bez ścieżki i bez ukośnika na końcu.
- Domeny są wymienione, a `NSPrivacyTracking` ma wartość false. Trzeba usunąć listę.

Zasadę ogólną znajdziesz w dokumentacji o [manifestach prywatności](https://developer.apple.com/documentation/bundleresources/privacy-manifest-files): 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](https://docs.expo.dev/guides/apple-privacy/), a klucz w [dokumentacji konfiguracji](https://docs.expo.dev/versions/latest/config/app/).

1. **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.
2. **Dodaj je do konfiguracji.** Dwie poniższe domeny to przykłady do podmiany:

```json
{
  "expo": {
    "ios": {
      "privacyManifests": {
        "NSPrivacyTracking": true,
        "NSPrivacyTrackingDomains": [
          "example-tracking-domain.com",
          "another-tracking-domain.com"
        ]
      }
    }
  }
}
```

3. **Sprawdź wygenerowany plik, zanim zapłacisz za build**, jeśli twój folder `ios` jest generowany przez Expo i ignorowany przez git. Uruchom `npx expo prebuild -p ios`, a potem otwórz plik `PrivacyInfo.xcprivacy` utworzony w folderze `ios`. Musi zawierać `NSPrivacyTracking` ustawione na `true` i pełną listę domen.
4. **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](https://devoria.fr/pl/blog/polityka-prywatnosci-aplikacji-ios).

## 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](https://devoria.fr/pl/expertise/aplikacja-odrzucona-przez-apple), a najczęstsze powody w artykule [dlaczego Apple odrzuca aplikację](https://devoria.fr/pl/blog/odrzucenie-aplikacji-apple-prawdziwe-przypadki).

Żeby sprawdzić wszystko przed wysyłką, [Apple Review Kit](https://devoria.fr/pl/kits/review-apple) 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ę](https://devoria.fr/pl/coaching): przejdziemy przez twój projekt na wideorozmowie, na twoim ekranie. A jeśli przygotowujesz swoją pierwszą publikację, [zrób darmową diagnozę](https://devoria.fr/pl/diagnostic): 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.


## Twój projekt

[Apple Review Kit](https://devoria.fr/pl/kits/review-apple): Checklista review App Store, której używam, moje poprawione odrzucenia od Apple, notatki dla recenzenta i dwa skille Claude Code, które sprawdzają twoją aplikację. 29 €.

[iOS Kit](https://devoria.fr/pl/kits/ios): Stwórz aplikację na iPhone'a z Claude Code: Starter Code moich aplikacji, skille sprawdzające jego pracę oraz Apple Review Kit, App Store Screenshots Kit i ASO Kit. 129,99 €.
