ITMS-91064: como corrigir “Invalid tracking information”
Por Mehdi Azizi
Publicado em , 5 min
ITMS-91064 Invalid tracking information: o que o erro significa, por que o manifesto de privacidade é recusado e como corrigir em um app Expo.
ITMS-91064 é uma recusa automática da Apple, enviada por e-mail depois que você entrega o seu build. Ela significa que as duas chaves de rastreamento do seu manifesto de privacidade se contradizem. A correção: deixar NSPrivacyTracking e NSPrivacyTrackingDomains em acordo, e depois gerar um novo build.
Eu tomei esse erro no TradaZen, meu app de treino de trading, depois de adicionar uma ferramenta de mensuração de anúncios. Aqui vão a causa e a correção.
O que significa o erro ITMS-91064?
A mensagem se chama "ITMS-91064: Invalid tracking information". Ela aponta para um arquivo PrivacyInfo.xcprivacy, o manifesto de privacidade que cada app e cada SDK pode incluir. Esse arquivo contém, entre outras coisas, duas chaves ligadas ao rastreamento, no sentido do App Tracking Transparency:
NSPrivacyTracking: verdadeiro se o app ou o SDK usa dados para rastreamento.NSPrivacyTrackingDomains: a lista dos domínios contatados para esse rastreamento.
A Apple descreve as três combinações recusadas na nota técnica sobre manifestos inválidos:
NSPrivacyTrackingé verdadeiro e a lista de domínios está vazia. Você precisa preencher a lista. Esse era o meu caso.NSPrivacyTrackingé verdadeiro, mas um domínio está escrito errado. Um domínio se escreve sem caminho e sem barra no final.- Há domínios listados enquanto
NSPrivacyTrackingé falso. Você precisa remover a lista.
A regra de fundo está na documentação sobre manifestos de privacidade: quando NSPrivacyTracking é verdadeiro, é obrigatório fornecer a lista de domínios.
O e-mail da Apple traz o nome e o caminho do arquivo com problema. Leia esse caminho: ele diz se o problema vem do manifesto do seu app ou do manifesto de um SDK incluído.
Como nos outros erros ITMS, não é a recusa de um reviewer. A verificação é automática, na entrega do build, e o build é descartado.
Por que isso acontece: um manifesto por target
Essa é a armadilha. Um SDK costuma incluir o próprio manifesto, com os seus domínios. Você pode achar que isso basta. Só que o seu app também tem o dele, e foi o do app que a Apple recusou no meu caso.
Meu caso, em 21 de julho de 2026. Ao conectar uma ferramenta de mensuração de anúncios no TradaZen, eu tinha declarado NSPrivacyTracking: true na configuração do app, o que está correto. Mas eu não tinha adicionado NSPrivacyTrackingDomains. O manifesto do SDK estava completo. O do app, gerado pelo Expo a partir da minha configuração, dizia "verdadeiro" com uma lista vazia. O build foi recusado no processamento.
A lição: o manifesto do SDK não cobre o do seu app. Se você declara rastreamento na sua configuração, também declara os domínios.
Corrigir o ITMS-91064 em um app Expo
Com o Expo, o manifesto do app é configurado em ios.privacyManifests. O princípio está na documentação do Expo sobre privacidade, e a chave na referência de configuração.
- Encontre os domínios de rastreamento do SDK. Copie a lista do manifesto da versão que o seu build inclui, não a da versão mais recente disponível online: elas podem ser diferentes. Não invente domínios.
- Adicione-os à sua configuração. Os dois domínios abaixo são exemplos para substituir:
{
"expo": {
"ios": {
"privacyManifests": {
"NSPrivacyTracking": true,
"NSPrivacyTrackingDomains": [
"exemple-domaine-de-suivi.com",
"autre-domaine-de-suivi.com"
]
}
}
}
}
- Confira o arquivo gerado antes de pagar por um build, se a sua pasta
iosé gerada pelo Expo e ignorada pelo git. Rodenpx expo prebuild -p iose abra o arquivoPrivacyInfo.xcprivacycriado na pastaios. Ele precisa conterNSPrivacyTrackingcomotruee a lista completa de domínios. - Gere um novo build e envie de novo. O manifesto faz parte do binário: uma atualização remota não o altera.
Atenção ao passo 3: esse comando pode apagar e recriar a pasta ios. Se você fez alterações manuais nela, não rode o comando no seu projeto. Trabalhe em uma cópia.
Se o seu app não faz nenhum rastreamento, o caminho é mais curto: mude NSPrivacyTracking para false e remova a lista.
O que esses domínios mudam para os seus usuários
Declarar esses domínios não é mera formalidade. Segundo a documentação da Apple, se o usuário não aceitou o rastreamento na janela do App Tracking Transparency, as requisições para esses domínios falham. É o comportamento esperado: o rastreamento só acontece se a pessoa disse sim.
A sua página na App Store precisa contar a mesma história. Se o seu manifesto declara rastreamento, as declarações de privacidade da página e a sua política de privacidade também precisam dizer isso. Caso contrário, você corre o risco de levar depois a recusa de um reviewer, pelas guidelines 5.1.1 ou 5.1.2: os detalhes estão em política de privacidade de um app.
Enviar o seu build sem surpresas
Os erros ITMS se corrigem rápido quando você sabe lê-los. As recusas que vêm depois pedem mais calma: o passo a passo está na página app recusado pela Apple, e os motivos mais comuns estão em por que a Apple recusa um app.
Para conferir tudo antes do envio, o Apple Review Kit reúne o meu checklist e skills do Claude Code que revisam o seu projeto. Se o seu envio travou e você quer um olhar humano, reserve uma hora comigo: a gente revisa o seu projeto por videochamada, na sua tela. E se você está preparando o seu primeiro lançamento, faça o seu diagnóstico gratuito: ele coloca as etapas em ordem e te envia o meu checklist antirrecusa da Apple.
Perguntas frequentes
O ITMS-91064 é uma recusa do App Review?
Não no sentido de um reviewer humano. É uma verificação automática feita no build quando ele é entregue, antes de entrar em revisão. O build é descartado: você precisa corrigir o manifesto de privacidade e enviar um novo build.
O que colocar em NSPrivacyTrackingDomains?
Os domínios que o seu app ou os seus SDKs contatam para rastreamento. Copie os que o SDK lista no manifesto da versão que o seu build inclui. Uma lista vazia com NSPrivacyTracking como true é uma das combinações que a Apple recusa.
O manifesto do meu SDK não basta?
Não. No TradaZen, o manifesto do SDK estava completo e o build foi recusado mesmo assim: o do app declarava rastreamento sem nenhum domínio. Se a configuração do seu app declara rastreamento, ela também precisa listar os domínios.
Meu app não faz rastreamento: o que fazer?
Mude NSPrivacyTracking para false na sua configuração e remova a lista de domínios. Depois confira se a sua página na App Store e a sua política de privacidade dizem a mesma coisa.
Dá para corrigir o ITMS-91064 sem gerar um novo build?
Não. O manifesto de privacidade faz parte do binário enviado à Apple. Você precisa corrigir a configuração, gerar um novo build e enviá-lo de novo.